如何让Visual Studio 2019/2022调试构建时链接常规运行库?
运行库从/MDd切换为/MD的额外注意事项
以下是你修改运行库配置之外需要重点关注的变更项:
- 全链路运行库版本统一
你需要保证项目依赖的所有子模块、第三方静态库/动态库,全部同步切换为Multi-threaded DLL (/MD)编译。混合使用/MDd和/MD版本的运行库会触发符号冲突、跨运行库内存分配释放崩溃等未知问题,属于VS编译的高危错误场景。 - 调试相关配置适配
切换到非调试运行库后,不要同步关闭项目自身的调试符号生成:保持Configuration Properties→Linker→Debugging下的Generate Debug Info选项开启,否则你自身业务代码的调试功能会受影响。如果需要调试CRT相关逻辑,可以在调试符号选项中添加微软官方符号源,拉取对应版本的release版CRT符号即可。 - 预处理器宏兼容处理
/MDd模式下VS会自动定义_DEBUG宏,不少业务代码、第三方库都会基于该宏开启调试逻辑、额外断言。切换到/MD后该宏会被自动移除,如果你需要保留部分自定义调试逻辑,不要依赖全局_DEBUG,建议自行定义项目专属的调试宏(例如MY_PROJECT_DEBUG)做逻辑区分。 - 断言控制逻辑调整
如果你仅希望禁用CRT内置的大量断言来加快启动,不要在预处理器中全局添加NDEBUG宏,该宏会禁用所有assert()语句的逻辑,包括你自己业务代码中编写的断言。仅切换运行库即可实现CRT断言的关闭,无需额外修改该宏配置。 - 动态库输出适配
如果你的项目本身是动态库,对外提供SDK给其他项目调用,需要同步告知所有使用方将运行库切换为/MD,否则使用方调用你的库时会触发运行时错误。
内容的提问来源于stack exchange,提问作者IODEV
相关产品推荐
相关产品推荐

