【发布时间】:2013-03-18 16:35:33
【问题描述】:
当我在我的代码中添加以下行时:
std::string sFrameTag
我收到以下链接器错误:
错误 34 错误 LNK2005: "public: __thiscall std::basic_string,class std::allocator >::~basic_string,class std::allocator >(void)" (??1?$basic_string@DU? $char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) 已经定义在 VFPAnalyzerApi.lib(VFPEvaluation.obj) msvcprtd.lib
我查看了 C/C++ -> 代码生成 -> 运行时库 下的项目属性,并将其从 /MDd 更改为 /MD,不知何故错误消失了。但是,我真的不明白有什么区别以及为什么会起作用。有人可以解释一下我到底改变了什么以及为什么会有所不同吗?
谢谢!!!
【问题讨论】:
-
一个是多线程DLL debug lib,另一个是多线程DLL release lib。你从前者走到了后者。暴露的对象,特别是连接到 debug-c-runtime-DLL 的标准对象的调试分配器,会导致从运行时库中导出的不同名称。因此,交叉链接将不起作用
标签: c++