gpt4 book ai didi

c++ -/MD 和/MDd(使用运行时库)有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:04:57 24 4
gpt4 key购买 nike

当我在我的代码中添加以下行时:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com