zoukankan      html  css  js  c++  java
  • Error C1189: #error: Please use the /MD switch for _AFXDLL builds

    在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。

    java新手自学群 626070845
    java/springboot/hadoop/JVM 群 4915800
    Hadoop/mongodb(搭建/开发/运维)Q群481975850
    GOLang Q1群:6848027
    GOLang Q2群:450509103
    GOLang Q3群:436173132
    GOLang Q4群:141984758
    GOLang Q5群:215535604
    C/C++/QT群 1414577
    单片机嵌入式/电子电路入门群群 306312845
    MUD/LIB/交流群 391486684
    Electron/koa/Nodejs/express 214737701
    大前端群vue/js/ts 165150391
    操作系统研发群:15375777
    汇编/辅助/破解新手群:755783453
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    函数(一.return)
    if、for、while的详解及实例(一)
    Silverlight 中 TreeView 的数据绑定
    跟着微软玩 WCF RIA Services (1) – 安装AdventureWorks OLTP数据库
    MEF学习(一) MEF介绍
    WCF学习笔记(1)面向服务
    基础知识应用程序配置文件(将section转换成对象一)
    Silverlight编译出错: 未给任务“CreateRiaClientFilesTask”的必需参数“ClientFrameworkPath”赋值
    悟道MVVM 一 各施其职
    Lync 2010 二次开发(一) 开发环境的部署
  • 原文地址:https://www.cnblogs.com/cfas/p/11676947.html
Copyright © 2011-2022 走看看