/MTd /MD /MDd

news/2024/12/4 17:25:22/
在编译 ATL 工程后,生成的 dll 在本电脑上能用,在别人的电脑上不能用。通过 Depends 工具分析一下,原来是编译选项没有选对,别的电脑上没有我生成的 dll 需要的基础 dll 文件,选成静态链接库就好了。故而总结一下几个编译选项,主要来自于参考 1 中链接网址;当然,更详细的介绍可以参见参考 2 microsoft 网址上介绍。

1VC编译选项 多线程(/MT)

多线程调试(/MTd)

多线程 DLL (/MD)

多线程调试 DLL (/MDd)

2C 运行时库                        库文件

Single thread(static link) ML            libc.lib

Debug single thread(static link) MLd        libcd.lib

MultiThread(static link) MT            libcmt.lib

Debug multiThread(static link) MTd            libcmtd.lib

MultiThread(dynamic link) MD            msvert.lib

Debug multiThread(dynamic link) MDd        msvertd.lib

3. 各种 C 运行时库的区别

(1)静态链接的单线程库

    静态链接的单线程库只能用于单线程的应用程序,C运行时库的目标代码最终被编译在应用程序的二进制文件中。通过/ML编译选项可以设置Visual C++使用静态链接的单线程库。

(2)静态链接的多线程库

    静态链接的多线程库的目标代码也最终被编译在应用程序的二进制文件中,但是它可以在多线程程序中使用。通过 /MT 编译选项可以设置 Visual C++ 使用静态链接的多线程库。

(3)动态链接的运行时库

    动态链接的运行时库将所有的 C 库函数保存在一个单独的动态链接库 MSVCRTxx.DLL中,MSVCRTxx.DLL 处理了多线程问题。使用 /MD 编译选项可以设置 Visual C++ 使用动态链接的运行时库。

/MDd、/MLd 或 /MTd 选项使用 Debug runtime library( 调试版本的运行时刻函数库 ) ,与 /MD 、 /ML 或 /MT 分别对应。 Debug 版本的 Runtime Library 包含了调试信息,并采用了一些保护机制以帮助发现错误,加强了对错误的检测,因此在运行性能方面比不上 Release 版本。

Warning:不要混合使用运行时库的静态版本和动态版本。在一个进程中有多个运行时库副本会导致问题,因为副本中的静态数据不与其他副本共享。链接器禁止在 .exe 文件内部既使用静态版本又使用动态版本链接,但仍可以使用运行时库的两个(或更多)副本。例如,当与用动态 (DLL) 版本的运行时库链接的.exe文件一起使用时,用静态(非DLL)版本的运行时库链接的动态链接库可能导致问题。(还应该避免在一个进程中混合使用这些库的调试版本和非调试版本)。

参考:

[1] http://www.cnblogs.com/eddyshn/archive/2009/11/23/1608823.html

[2] http://msdn.microsoft.com/en-us/library/aa278396%28VS.60%29.aspx


http://www.ppmy.cn/news/188824.html

相关文章

SDTM--study data tabulation model implementation guide:human clinical trails(临床研究数据模型实施指南)3.4

Fundamental of the SDTM(SDTM原理) observations and variables(观察结果与变量) SDTM build by observations and variables, each observation can be describe by series of variables,each variable can be classified according to t…

mtd设备操作、jffs2

安装mtd相关命令 手动安装mtd-utils,根据系统自行选择 mtd交叉编译:https://blog.csdn.net/zhangxuechao_/article/details/52124424 系统flash操作命令 # cat /proc/mtd dev: size erasesize name mtd0: 00080000 00020000 "boot" m…

mtd

1.Linux-MTD Subsystem FLASH在嵌入式系统中是必不可少的,它是bootloader、linux内核和文件系统的最佳载体。在Linux内核中引入了MTD子系统为NOR FLASH和NAND FLASH设备提供统一的接口,从而使得FLASH驱动的设计大为简化。 在引入MTD后Linux系统中FLAS…

MDFN-2

这个之前也发过哦... 深度特征学习方案将重点从具有细节的具体特征转移到具有语义信息的抽象特征。它通过构建多尺度深度特征学习网络 (MDFN) 不仅考虑单个对象和局部上下文,还考虑它们之间的关系。多尺度特征学习才是目标检测精髓 上一回的结论是浅层和深层的特征…

.md文件的打开

今天终于知道.md文件是markdown格式的了, windows下可以安装markdownpad来打开md文件: http://blog.csdn.net/github_35160620/article/details/52158604 ubuntu下则可安装retext,查看时 retext xxx.md即可 例子: ubuntu下&…

什么是MDM

MDM或移动设备管理是一种软件应用程序,用于管理企业中的终端,如笔记本电脑、智能手机、平板电脑等。随着越来越多的员工使用这些设备,各种形式和规模的企业现在都转向移动设备管理,以增强数据安全性并提高生产力。 MDM是什么意思…

vs MD /MDD /ML /MT /MTD的简单介绍

1、MD /MDD /ML /MT /MTD的简单介绍 在编译ATL工程后,生成的dll在本电脑上能用,在别人的电脑上不能用。通过Depends工具分析一下,原来是编译选项没有选对,别的电脑上没有我生成的dll需要的基础dll文件,选成静态链接库就…

.md文件是什么?.md如何打开?怎么打开?

可能有些朋友会看到以md为结尾的文件,但是不知道用什么打开。下面就来说一下.md文件如何打开,markdown文件用什么打开。 1、首先来普及一下什么是md文件, md全称markdown,markdown也是一种标记语言。   2、md文件其实可以用常用…