C++:error 1189(转)
2021-07-09 20:07
标签:builds 配置 span 没有 ++ ica window switch 图片 在VS 2013中编译程序时出现错误: 错误提示1: error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d] 原因: 常规里面是:在静态库中使用MFC,或使用标准Windows库,此时该处可能无论是什么都会报错 运行库中多线程调试是:MDd(多线程调试DLL) 解决方法: 将MDd改成MTd,如果改正后报错误2,按下面方法更改。 错误提示2: error C1189: #error: Please use the /MD switch for _AFXDLL builds 原因: 常规里面是:在共享DLL中使用MFC, 运行库中多线程调试是:MTd(多线程调试) 解决方法: 将常规改成:在静态库中使用MFC,或使用标准Windows库 常规和运行库 如下图: 常规: 右击项目->属性->配置属性->常规,然后在右边的“项目默认值”中的“MFC的使用”选项中选择“在静态库中使用MFC”, 多线程调试: 右击项目-->属性->配置属性->c/c++->代码生成->运行时库->多线程调试(/MTd) 相关注释: MFC的使用,有三种设置: 1.使用标准Windows库 2.在静态库中使用MFC:是将DLL中的相关代码写进EXE文件中,文件较大,但是可以在没有相关DLL的机器上运行; 3.在共享DLL中使用MFC:指的是打包时一些MFC的DLL的内容没有被包含在EXE文件中,所以EXE文件较小,但是运行时要求系统中要有相关的DLL文件; 多线程调试 /MD:在dll中使用多线程,创建动态链接库的release版本,需要选择。 /MT: 在exe里使用多线程,创建exe的release版本,需要选择。 /MTd:同/MT一样,不过是在Debug版本中使用。 /MDL:同/MD一样,不过是在Debug版本中使用。 如果是Debug的“在静态库中使用MFC”,不要使用MDd,改用MTd,然后编译即可通过。 如果是Debug的“在共享DLL中使用MFC”,注意不要使用MTd,改用MDd; 如果是Release版本“在静态库中使用MFC”,不要使用MD,使用MT; 如果是Release版本的“在共享DLL中使用MFC”,不要使用MT,使用MD。 C++:error 1189(转) 标签:builds 配置 span 没有 ++ ica window switch 图片 原文地址:https://www.cnblogs.com/abella/p/9564636.html