/MD、/MT、/LD(使用运行库)

有关 C 运行库以及使用 /clr(公共语言运行时编译) 进行编译时要使用哪些库的更多信息,请参见 CRT 库功能。

传递给链接器的给定调用的所有模块都必须使用相同的运行库编译器选项(/MD、/MT、/LD)进行编译。

有关如何使用运行库的调试版本的更多信息,请参见C 运行时库参考。

知识库文章 Q140584 也讨论如何选择适当的 C 运行库。

有关 DLL 的更多信息,请参见 Visual C++ 中的 DLL

在 Visual Studio 开发环境中设置此编译器选项

打开项目的“属性页”对话框。 有关详细信息,请参见如何:打开项目属性页。

展开“C/C++”文件夹。

选择“代码生成”属性页。

修改“运行库”属性。

以编程方式设置此编译器选项

请参见RuntimeLibrary

若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 Visual Studio 2017 RC 文档。

动态链接库 (DLL) 是作为函数和资源的共享库的可执行文件。 动态链接可使执行文件调用函数或使用存储在单独文件中的资源。
可从使用这些函数和资源的可执行文件中对其分别进行编译和部署。 操作系统可在已加载可执行文件时或在运行时按需将 DLL 加载到可执行的内存空间中。
DLL 还可以在可执行文件之间轻松共享函数和资源。 多个应用程序可同时访问内存中单个 DLL 副本的内容。 静态链接会将 .lib 文件中所有对象代码复制到可执行文件中。 动态链接仅包括在运行时用于查找和加载含有数据项或函数的 DLL 所需的信息。
在创建 DLL 时,还会创建一个包含此信息的 .lib 文件。 生成调用 DLL 的可执行文件时,链接器会使用 .lib 文件中的导出符号来为加载程序存储此信息。
当加载程序加载 DLL 时,该 DLL 会映射到你的可执行文件的内存空间中。 将调用 DLL 中的特殊函数 DllMain 来执行 DLL 要求的任何初始化。 使用动态链接代替静态链接有若干优点。 当使用 DLL 时,可以节省内存空间,并减少交换操作。 当多个应用程序可以使用 DLL 的单个副本时,可以节省磁盘空间和下载带宽。
DLL 可单独部署和更新,这可以使你在无需重新生成和发布所有代码的情况下,提供售后支持和软件更新。 DLL 是一种提供特定区域资源的简便方法,可以支持多语言程序,并简化创建国际版本应用程序的过程。 下列主题提供有关如何编程 DLL 的详细信息。
本节内容 演练:创建和使用动态链接库 (C++)
介绍如何使用 Visual Studio 创建和使用 DLL。 应用程序和 DLL 之间的区别
描述应用程序和 DLL 之间的基本区别。 使用 DLL 的优点
描述动态链接的优点。 DLL 的类型
提供有关可生成的不同类型的 DLL 的信息。 DLL 常见问题
提供有关 DLL 的常见问题解答。 将可执行文件链接到 DLL
描述与 DLL 的显式链接和隐式链接。 初始化 DLL
讨论当 DLL 加载时必须执行的 DLL 初始化代码(如分配内存)。 运行库行为
描述运行库如何执行 DLL 启动序列。 LoadLibrary 和 AfxLoadLibrary
讨论如何在运行时使用 LoadLibrary 和 AfxLoadLibrary 显式链接到 DLL。 GetProcAddress
讨论如何使用 GetProcAddress 获取 DLL 中导出函数的地址。 FreeLibrary 和 AfxFreeLibrary
讨论当不再需要 DLL 模块时如何使用 FreeLibrary 和 AfxFreeLibrary。 Windows 用来定位 DLL 的搜索路径
描述 Windows 操作系统用来定位系统上的 DLL 的搜索路径。 动态链接到 MFC 的规则 DLL 的模块状态
描述动态链接到 MFC 的规则 DLL 的模块状态。 扩展 DLL
解释通常实现从现有 Microsoft 基础类库类派生的可重用类的 DLL。 创建纯资源 DLL
讨论只包含资源(如图标、位图、字符串和对话框等)的纯资源 DLL。 MFC 应用程序中已本地化的资源:附属 DLL
提供对附属 DLL 的增强支持,该功能有助于创建针对多种语言进行本地化的应用程序。 导入和导出
描述如何将公共符号导入应用程序或从 DLL 导出函数。 Active 技术和 DLL
使对象服务器得以在 DLL 内实现。 DLL 中的自动化
描述“MFC DLL 向导”中的“自动化”选项提供的内容。 MFC DLL 命名约定
讨论 MFC 中包含的 DLL 和库如何遵循结构化命名约定。 从 Visual Basic 应用程序调用 DLL 函数
描述如何从 Visual Basic 应用程序中调用 DLL 函数。
相关章节 将 MFC 作为 DLL 的一部分使用
描述使你可以将 MFC 库作为 Windows 动态链接库的一部分来使用的规则 DLL。 MFC 的 DLL 版本
描述如何将 MFCxx.dll 和 MFCxxD.dll(其中 x 是 MFC 版本号)共享动态链接库用于 MFC 应用程序和扩展 DLL。 (NOTINBUILD)Visual C++ Programming Methodologies
提供描述有关 Visual C++ 库的概念信息和讨论各种编码技术和方法的主题的链接。

项目生成动态库



项目生成静态库

修改 目标计算机属性 x86 x64 ARM etc...

修改默认指令集


error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug 属性1. 在工程上右键->属性->c/c++->代码生成->运行库 四个选项及含义分别如下:   1.1 /MDd:MD_DynamicDebug,我理解是 “共享DLL中使用MFC” 时的 Debug   1.2 /MD:MD_DynamicRelease,我理解是 “共享DLL中使用MFC” 时的 Release   1.3 /MT:MD_StaticRelease,我理解是 “在静态库中使用MFC” 时的 Debug
  1.4 /MTd:MD_StaticDebug,我理解是 “在静态库中使用MFC” 时的 Release 属性2. 在工程上右键->属性->配置属性-->常规-->MFC的使用   2.1 其中两个选项如下:   2.2 在共享DLL中使用MFC   2.3 在静态库中使用MFC 属性3. 我们有两种编译模式,一种是Release,一种是Debug。 问题来了: VisualStudio报错:error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug 翻译:这句的意思是 检测到 “运行库” 的不匹配项:值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug 人话:………………………… 属性1……………………… 属性1.4…………………………属性1.1 解决:能够看出来是Debug时的 属性1 和 属性2 不匹配,那要么将 属性1设置为 /MDd,要么将 属性2 设置为 在静态库中使用MFC。    反正编译模式(属性3)、MFC的使用(属性2)、运行库(属性3)要三位一体对应起来。

1.改变项目 动态库、静态库属性。 2.使用运行库 /MD、/MT、/LD说明的更多相关文章

  1. C和C++运行库

    一.Windows下动态库 1. 静态函数库 这类库的名字一般是libxxx.lib:利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后 ...

  2. [转帖]你所不知道的C和C++运行库

    [C-C++]你所不知道的C和C++运行库 https://blog.csdn.net/humanking7/article/details/85887884 原作者也是转的blog 最近一个物理机上 ...

  3. 你所不知道的C和C++运行库 标签: vc 2017-05-26 10:33 41人阅读 评论(0) 收藏

    在使用vs2013调用vc2005编译出的dll时出现错误,遂将源程序用vs2013编译出dll,再用vs2013调用错误消失,不解.寻找原因时有人说"VC库版本不一样",故查找C ...

  4. c运行库、c标准库、windows API的区别和联系

    C运行时库函数C运行时库函数是指C语言本身支持的一些基本函数,通常是汇编直接实现的.  API函数API函数是操作系统为方便用户设计应用程序而提供的实现特定功能的函数,API函数也是C语言的函数实现的 ...

  5. (转)c运行库、c标准库、windows API的区别和联系

    C运行时库函数C运行时库函数是指C语言本身支持的一些基本函数,通常是汇编直接实现的.  API函数API函数是操作系统为方便用户设计应用程序而提供的实现特定功能的函数,API函数也是C语言的函数实现的 ...

  6. phpstudy 出现“请自行检查是否安装VC9运行库??”问题 -- 缺少vc9库

    phpStudy是一款PHP调试环境的程序集成包,该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是非常方便.好用的 ...

  7. phpStudy启动失败时的解决方法 提示缺vc9运行库

    问题描述: 问题产生原因分析: php5.3.5.4和apache都是用vc9编译,电脑必须安装vc9运行库才能运行. php5.5.5.6是vc11编译,如用php5.5.5.6必须安装vc11运行 ...

  8. LabVIEW:可执行文件运行缺少运行库问题

    造冰箱的大熊猫@cnblogs 2018/5/11 上周调试设备网口犯了一个低级错误,今天又搞出一个笑话 目标机上没有LabVIEW开发环境,于是在开发机上将VI打包成可执行程序.在目标机上运行可执行 ...

  9. 请自行检查是否安装VC9运行库??

    phpStudy是一款PHP调试环境的程序集成包,该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是非常方便.好用的 ...

随机推荐

  1. 18- php Redis扩展编译

    一:php扩展编译Redis :wget http://pecl.php.net/get/redis-2.2.5.tgz :tar -zxvf redis-.tgz :cd redis- :/usr/ ...

  2. Android模糊效果总结

    1. 软件模糊 用软件的方法.利用cpu计算,无sdk版本号要求. 效果图: 关键模糊代码 github链接 原文 链接 译文 链接 演示样例 代码 本文地址 :http://blog.csdn.ne ...

  3. java 邮件(2)

    /**  * 方法描述:发送带附件的邮件  *   * @throws UnsupportedEncodingException  */  public static boolean sendEmai ...

  4. 我的Java开发学习之旅------>求N内所有的素数

    一.素数的概念 质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,换句话说就是该数除了1和它本身以外不再有其他的因数:否则称为合数 ...

  5. php微信支付测试开发(流程已通)

    必要条件: appid //公众号后台开发者中心获得(和邮件内的一样)   mchid//邮件内获得  key//商户后台自己设置  appsecret //公众号开发者中心获得 两个证书文件,邮件内 ...

  6. API的理解和使用——哈希类型的命令

    哈希常用的命令复习 命令 功能 hset key field value 设置哈希值 hsetnx 设置哈希值,field或键必须不存在 hget 获取某个file对应的值 hdel 删除一个或多个f ...

  7. STemWin显示汉字 — SD卡外挂XBF字库

    转载注明出处  方法来自安福莱教程 1: 使用emWin自带小工具生成字库 (1)启动软件 选择4位抗锯齿 (2)根据需求选择字体类型和字体大小 (3)另存为XBF格式 2: 创建XBF字体 #inc ...

  8. [STM8L]基于STM8L152的TAB段式LCD液晶驱动的分析 - 单片机干货 - 中国电子技术论坛 - 最好最受欢迎电子论坛!

    [STM8L]基于STM8L152的TAB段式LCD液晶驱动的分析 - 单片机干货 - 中国电子技术论坛 - 最好最受欢迎电子论坛!.md 主控芯片为STM8L152C4T6自带LCD控制器,低功耗系 ...

  9. BZOJ 3037 创世纪

    题解: 首先从基环树上的环上选两个点x,y 断开x,y之间的边,然后做树形DP. 设f[x]为选x的情况下的最大值,g[x]为不选x的情况下的最大值. 分两种情况讨论, 1.选x,则y一开始就处于被支 ...

  10. linux系统调用mount全过程分析【转】

    本文转载自:https://blog.csdn.net/skyflying2012/article/details/9748133 系统调用本身是软中断,使用系统调用,内核也陷入内核态,异常处理,找到 ...