c++ 运行时库选项
c++ Runtime Library Options
运行时库/MTd/MT等是什么意思?
阅读 http://msdn.microsoft.com/en-us/library/2kzt1wy3(v=vs.71).aspx,并没有说服我。
我必须使用第三方项目,该项目的所有"发布"均为"/MD",所有"调试"均为"/MDd"。我的所有项目(其他人使用,所以我无法更改)都有"/MT"和"/MTd"。
我必须将该第三方项目中的库作为输入添加到我的项目中。为了避免链接器错误,我更改了该项目中的设置以匹配我的项目。
我这样做了,没有理解其中的含义。
我的项目构建,似乎可以工作(还没有使用很多功能),但是原始项目中的可执行文件将不再构建,存在诸如
error C1189: Please use the /MD switch for _AFXDLL builds c:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfcincludeafxver_.h
所以。。。我不知道如何使一切正常,或者我的更改意味着什么。
我可以以某种方式组合/MD 和/MT 库吗?我必须做什么才能使这两个项目都正常工作?
/MD
标志隐式定义与/MT
相同的信息 - plus 指定您使用的是运行时库的 DLL 版本。
/MT
和/MD
标志基本上都说使用运行时库的多线程版本 - 不同之处在于/MD
说使用基于 DLL 的版本,而/MT
库中静态链接。
所有带有额外d
的标志都是调试版本 - 所以/MDd
说使用基于 DLL 的多线程运行时库的调试版本。
您的问题中没有太多关于什么不会导致失败的项目无法正常工作的细节。 如果将所有内容切换为使用/MD
,则需要将运行时 DLL 与项目一起包含在内,这可能是它们现在失败的原因。 (以前,使用/MT
时,它们将静态链接到您的项目。
附带说明一下 - VS 2010 版本中标志的文档很容易理解。 该语言在后来的文档版本中得到了极大的简化,尽管标志的含义没有改变。 查看 2010 年笔记而不是您链接的 VS 2003 文档可能会让您更容易理解。
- CMake-按正确顺序将项目与C运行时对象文件链接
- 我在c++代码中生成了一个运行时#3异常
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 删除指向指针的指针是运行时错误吗
- 如何用参数值调用函数(仅在运行时已知)
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- c++中的指针和运行时错误
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- 有没有一种方法可以测量c++程序的运行时内存使用情况
- 建议在运行时将带有类实例的列表从c++导入qml
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- C++项目编译强制使用 /clr 选项,尽管在没有公共语言运行时支持的情况下执行它
- C++编译时/运行时选项和参数,如何处理?
- c++ 运行时库选项
- 如何在运行时从 Glade 定义添加 Gtk::笔记本选项卡
- Boost库构建-运行时链接和链接选项之间的差异
- 更改运行时库选项对运行时链接的影响
- Dll与静态库(MSVC9运行时库选项)
- 在运行时单击QTabWidget将内容加载到选项卡中