作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当我在我的代码中添加以下行时:
std::string sFrameTag
我收到以下链接器错误:
Error 34 error 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) already defined in VFPAnalyzerApi.lib(VFPEvaluation.obj) msvcprtd.lib
我查看了项目属性,在 C/C++ -> code generation -> runtime Library 下并将其从 /MDd
更改为 /MD
并且错误以某种方式消失了。但是,我真的不明白有什么区别以及它为什么起作用。有人可以解释一下我到底做了什么改变以及为什么会有所不同吗?
谢谢!!!
最佳答案
MSDN在这方面有很好的文档。
简而言之,/MDd
将 C 和 C++ 标准库的调试版本的必要部分链接到您的 DLL 中。 /MD
类似,但使用标准库的 NDEBUG
版本。如果您尝试链接结合了调试和发布标准库的代码,您将遇到符号冲突,因为这两个库将提供相同的函数集。
关于c++ -/MD 和/MDd(使用运行时库)有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15678456/
我是一名优秀的程序员,十分优秀!