/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. vs2013数据库连接对应的dll

    mysql for visual studio 1.1.1mysql connector net 6.3.9mysql connector/odbc 5.3

  2. 深入Asyncio(八)异步迭代器

    Async Iterators: async for 除了async def和await语法外,还有一些其它的语法,本章学习异步版的for循环与迭代器,不难理解,普通迭代器是通过__iter__和__ ...

  3. 禁用android studio自身的ndk编译disable automatic ndk-build call

    1,让studio不自动编译jni文件,而是我们手动通过ndk-build编译    打开工程下面的app文件夹, 找到build.gradle   添加如下:  defaultConfig {   ...

  4. Flyweight Design Pattern 共享元设计模式

    就是利用一个类来完毕多种任务.不用每次都创建一个新类. 个人认为这个设计模式在C++里面,好像能够就使用一个函数取代,利用重复调用这个函数完毕任务和重复利用这个类,好像几乎相同. 只是既然是一个设计模 ...

  5. A charge WIFI point base on airbase-ng+dhcp+lamp+wiwiz

    Make wifi as a hot point Make a script echo $0 $1 case $1 in "start") sleep 1 ifconfig wla ...

  6. go module

    前言 go 1.5 引进了vendor管理工程依赖包,但是vendor的存放路径是在GOPATH底下,另外每个依赖还可以有自己的vendor,通常会弄得很乱,尽管dep管理工具可以将vendor平级化 ...

  7. WebService 简单应用

    Web服务全称:XML Web Service,是一种可编程的应用程序逻辑组件,它可以在Internet或企业网的Web应用程序之间共享.Web服务被设计成能够通过Internet与其它应用程序之间直 ...

  8. 【题解】CF45G Prime Problem

    [题解]CF45G Prime Problem 哥德巴赫板子题? \(\frac{n(n+1)}{2}\)若是质数,则不需要分了. 上式 若是奇数,那么拆成2和另一个数. 上式 若是偶数吗,直接\(O ...

  9. COPY SAP 标准gui状态

    [转]如何COPY SAP标准gui状态 1.可以自己建立 2.找到合适的ALV程序,然后找到合适的 gui_statu,进行copy. 但是这个是系统有过自定义开发会方便很多,如果没有,那要找标准程 ...

  10. Java基础教程:HashTable与HashMap比较

    Java基础教程:HashTable与HashMap比较 1.  关于HashMap的一些说法: a)  HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体.HashMap的底层结 ...