我写了几个调试函数在debug.h,debug.cpp中,
我想实现在任何一个工程中只要包含这个debug.h文件就可以用其中的调试函数,
而不用将这两个文件都添加到工程中来。
我已经将debug.h放到VC的默认include目录下,debug.cpp放到VC默认的源文件目录
下,但是编译的时候还是找不到函数定义的地方。
请问如何解决?

解决方案 »

  1.   

    通过vc将你写的debug.cpp封装成静态连接库(static library),这可能比用动态连接库对于你来说更适合。然后将产生的x.lib到vc的默认lib目录下或通过工具(tools)菜单下的选项(options)的目录(directory)属性页的library编目下添加生成的x.lib的路径即可。
      

  2.   


    静态连接库使用要简单一些,dll的效率高一些。#pragma comment(lib,"x.lib")也可以装载库文件
      

  3.   

    静态库我试过的阿
    添加
    #include "debug.h"
    #pragma  comment(lib,"debug.lib")
    到工程的stdafx.h
    编译时无错,连接时有两个错误
    msvcrt.lib(MSVCRT.dll) : error LNK2005: _vsprintf already defined in libcmtd.lib(vsprintf.obj)
    msvcrt.lib(MSVCRT.dll) : error LNK2005: __flushall already defined in libcmtd.lib(fflush.obj)
    libcmtd.lib(crt0init.obj) : warning LNK4098: defaultlib "msvcrt.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
    Debug/PidTool.exe : fatal error LNK1169: one or more multiply defined symbols found
    其中vsprintf,flushall是我的debug库中用到的c库函数。
    这样不行我才想直接用源文件的,其实我也想直接使用lib库阿,请列位高手指点一下!
    感激不尽!
      

  4.   

    上面的错误只在Debug版中才会出现,Release版中只有一个警告,但就是不爽。
      

  5.   

    在你的Debug中不要include 其它头文件,仅声明vsprintf,flushall的函数原型就可以了.
      

  6.   

    我把所有的include文件都去掉了还是不行啊
      

  7.   

    去掉include后有没有重新生成lib
      

  8.   

    #include <debug.h>
    包含系统目录下的文件不要用""
      

  9.   

    to hq1978(happy) 
    我想这是无关紧要的,它是能找到这个头文件的阿
      

  10.   

    “连接时有两个错误
    msvcrt.lib(MSVCRT.dll) : error LNK2005: _vsprintf already defined in libcmtd.lib(vsprintf.obj)
    msvcrt.lib(MSVCRT.dll) : error LNK2005: __flushall already defined in libcmtd.lib(fflush.obj)
    libcmtd.lib(crt0init.obj) : warning LNK4098: defaultlib "msvcrt.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
    Debug/PidTool.exe : fatal error LNK1169: one or more multiply defined symbols found”
    这是因为库文件和你的连接使用了不同版本的运行时库,比如多线程和单线程、DEBUG和RELEASE混用了,请检查一下。另为,请参考VC自己的做法,在库的名字后加后缀,比“m”、“d”等。
      

  11.   

    编译成dll调用问题解决,不知何故如此?
    谢谢大家的参与!!!!!!