【发布时间】:2009-07-26 07:23:40
【问题描述】:
我的项目有一堆包含多个项目的解决方案。有两种配置:
- 发布 (/MT)
- 调试 (/MTd)
我们有一个 3rd 方库。我们应该为每个配置有 2 个版本(使用 /MT 编译的发布版本和使用 /MTd 编译的调试版本)还是只有一个版本(/MT 或 /MTd)就足够了?
谢谢 迪玛
【问题讨论】:
标签: c++ visual-studio linker compilation
我的项目有一堆包含多个项目的解决方案。有两种配置:
我们有一个 3rd 方库。我们应该为每个配置有 2 个版本(使用 /MT 编译的发布版本和使用 /MTd 编译的调试版本)还是只有一个版本(/MT 或 /MTd)就足够了?
谢谢 迪玛
【问题讨论】:
标签: c++ visual-studio linker compilation
通常,您还需要拥有该外部库的两个版本,并且一致地编译所有内容以进行调试或发布。问题是混合不同的 C 运行时(CRT,例如调试和发布 CRT)会导致崩溃。
有一个例外,您可以只使用发布版本:如果外部库是 DLL,并且如果您没有将任何 CRT 对象从一个 CRT 传递到另一个 CRT,则该限制不适用。
CRT 对象是 FILE 指针、malloc 块(仅当一个库分配和其他版本时)、当前语言环境的概念和时区的概念。
【讨论】: