【VS开发】MFC运行时库与debug、release版本之间的配置关系
参考内容:
前段时间从网上下来一个有意思的代码,用VS2010打开时需要将工程转换为2010的工程,转化后却出现了编译不通过的问题,类似这样的错误:c:\program files\microsoft visual studio 10.0\vc\atlmfc\include\afxver_.h(81): fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds。之前一直没注意过MFC库使用方式需要与运行时库一致的问题,感觉很是奇怪,后来搜索了一下才知道有这样的问题。所以在此简要的说明一下这样的问题,以给大家提供一个参考。
VS2010编译器要求MFC库使用方式需要与运行时库需一致,否则会出现错误或者警告。
如果使用MFC动态库,则要使用动态的运行时库;如果使用MFC静态库,则要使用静态的运行时库。同时,如果工程是Debug配置,则要用调试版本的运行时库;如果是Release配置,则要调用非调试版本的运行时库,具体对应关系,如下所示:(D-DLL,d-Debug)
1、在共享 DLL 中使用 MFC(运行时库肯定要用动态的运行时库)
Debug配置 --> Multi-threaded Debug DLL(/MDd)
Release配置 --> Multi-threaded DLL(/MD)
2、在静态库中使用 MFC(运行时库肯定要用静态的运行时库)
Debug配置 --> Multi-threaded Debug(/MTd)
Release配置 --> Multi-threaded(/MT)
相关文章
- Initializing a static field vs. returning a value in static property get?
- __proto__ VS. prototype in JavaScript
- 【转】VS项目属性的一些配置项的总结
- VS编译不能完成一直在编译
- Minikube vs. kind vs. k3s vs k3d vs MicroK8s
- VS code配置c环境
- DOMContentLoaded vs onload
- VS 2013 with update 5 编译程序出现A task was cancel
- 云管理vs云治理
- 如何将vs的方案配置更改为Release;或分享给别人c语言编译的.exe文件怎么能直接运行;或提示“由于找不到MSVCP140D.dll无法继续执行代码”的解决方法
- OpenCV 3.1 VS 2010 Cuda 7.5 TBB Configuration 配置
- STM32keil设置中的宏定义STM32F10X_MD,USE_STDPERIPH_DRIVER作用以及用VS Code编写stm32代码配置问题