我写了几个调试函数在debug.h,debug.cpp中,
我想实现在任何一个工程中只要包含这个debug.h文件就可以用其中的调试函数,
而不用将这两个文件都添加到工程中来。
我已经将debug.h放到VC的默认include目录下,debug.cpp放到VC默认的源文件目录
下,但是编译的时候还是找不到函数定义的地方。
请问如何解决?
我想实现在任何一个工程中只要包含这个debug.h文件就可以用其中的调试函数,
而不用将这两个文件都添加到工程中来。
我已经将debug.h放到VC的默认include目录下,debug.cpp放到VC默认的源文件目录
下,但是编译的时候还是找不到函数定义的地方。
请问如何解决?
静态连接库使用要简单一些,dll的效率高一些。#pragma comment(lib,"x.lib")也可以装载库文件
添加
#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库阿,请列位高手指点一下!
感激不尽!
包含系统目录下的文件不要用""
我想这是无关紧要的,它是能找到这个头文件的阿
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”等。
谢谢大家的参与!!!!!!