C++链接问题
我在编译项目时出错。 我试图链接到我在Windows上使用visual studio的库。C++链接问题
当试图创建obkect(新),我收到以下错误:
Error 2 error LNK2005: "public: __thiscall std::basic_string,class std::allocator >::~basic_string,class std::allocator >(void)" ([email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]) already defined in RMLibV053.lib(Inifile.obj) msvcprtd.lib
我用的#ifndef 我用
这可能是您的代码设置为在构建时使用与您的PTLibV002.lib库不同的运行时环境(单线程,多线程,多线程DLL)。
不仅有一个在系统中 – 2009-08-06 13:11:10
这几乎总是造成这个问题的原因。 PTLibV002.lib可能与该设置一起使用静态链接的运行时库进行编译。 – KJAWolf 2009-08-06 13:22:20
是的,我需要静态链接运行时间库 – 2009-08-06 14:40:17
可能是你增加了一个类似的库附加库禁用警告。
不,我只添加了一个 – 2009-08-06 13:15:44
如果PTLibV002.lib被编译为使用静态链接的C++库,并且您的二进制文件使用C++库作为DLL,那么这是您会收到的链接错误。这是因为PTLibV002.lib将包含它使用的STL中函数的定义,而您的二进制包含另一个指向C++库DLL的定义。
我把它作为静态链接。我使用Visual Studio并在链接中定义,所以我想这不是事实。 – 2009-08-06 15:14:47
正如Ferruccio解释过的。
我在项目的visual studio配置上使用:编译时使用动态链接运行时库的设置:多线程调试DLL(/ MDd)而不是多线程调试(/ MTd)。
您是否修改了编译器路径或添加了额外的库? – 2009-08-06 13:07:52
是的,我添加了路径。 – 2009-08-06 13:15:14