运行程序显示丢失“MSVCR100D.dll”
前言
写了一个Dll注入工具,结果发现程序在其他机器上会出现丢失“MSVCR100D.dll”。这个dll是vs2010自带的动态链接库,如果在没安装vs2010运行库的电脑中使用就会出现这种情况。我在网上搜了一下并总结所涉及的知识。

/MD , /MDd 与 /MT , /MTd
这些是程序在被编译器编译时的所传入的参数,不同的参数编译器会做出不同的操作。
/MD
/MD的意思是多线程DLL的版本,编译器会把MSVCRT.lib放到.OBJ文件中,然后链接器会通过MSVCRT.lib解析外部符号。其是动态编译,也就是程序将相应dll的信息保存在导入表中,如此一来程序在运行的时候就必须依赖于相应的dll。如果缺少相应的dll将无法运行,如果是vs2010编写的程序也就会出现缺失MSVCR100.dll。
/MDd
/MDd和/MD差不多,只不过其是在调试状态下。所以链接器会将MSVCRTD.lib放到.OBJ文件中。如果是vs2010编写的程序其将依赖于MSVCR100D.dll。

/MT
/MT的意思是多线程静态的版本。编译器会把静态多线程标准 C++ 库(libcpmt.lib)放到 .OBJ文件中,然后链接器通过libcpmt.lib解析外部符号。其属于静态编译,所以会将那些本来是在dll中导出的函数都整合到exe文件中。这样exe文件就会变大,其在运行的时候也不需要去依赖于相应的动态链接库。在程序的输入表中也不会有相应的dll信息。
/MTd
/MTd 与 /MT相似,只不过其实调试状态下的。编译器会将libcpmtd.lib放到.OBJ文件中,链接器通过libcpmtd.lib解析外部符号。
总结
所以为了让程序不依赖与MSVCRT100D.dll或者是MSVCRT100.dll,我们需要在用VS2010编写程序的时候将编译选项设置为 /MT或/MTd。
运行程序显示丢失“MSVCR100D.dll”的更多相关文章
- 当你的程序在朋友的机器上显示丢失msvcr100d.dll的时候
0. 给朋友发了个DEMO,收到提示:丢失 msvcr100d.dll 1. 一看是运行库文件,赶紧让朋友下载并安装vc++ 2010 redistribution,朋友反馈还是提示丢失这个dll文件 ...
- VS2010生成的文件在别的机器上运行提示“丢失MSVCR100D.dll”<转>
用vs2010编写的程序经常会发生的一个问题.在自己的机器上运行的好好的,但是在别的机器上就会发生没有找到MSVCR100D.dll.这是 个很头疼的问题.对于一些代码量几百行的小程序,我不可能要求其 ...
- 安装wampserver遇到,无法启动此程序,丢失MSVCR110.dll
这个问题遇到多次了,根据网上的解决办法,下载这个动态链接库文件,安装到指定位置重启系统后还是解决不了,其实这个文件有时候是存在的也会出现这个问题.问题截图如下 其实这个我认为是系统缺少了相关组组件的安 ...
- 64位电脑上启动程序出现丢失MSVCR110.dll的解决办法
启动程序报错如下: 无法启动此程序,因为计算机中丢失MSVCR110.dll.尝试重新安装该程序以解决此问题. 应该很容易就搜索到,缺少这样的dll文件,是没有安装Visual C++ Redistr ...
- Xshell启动时显示丢失MSVCP110.dll解决方法
成功安装xshell之后,在运行时却弹出“无法启动此程序,因为计算机中丢失MSVCP110.dll.尝试重新安装该程序以解决此问题”,很多人按照提示重装了还是出现同样的问题,本集教程将具体讲解如何处理 ...
- Xshell启动时显示丢失MSVCP110.dll
重装系统,装完Xshell5启动时,出现丢失MSVCP110.dll文件 这种情况不要相信网上所说的什么下载“MSVCP110.dll”文件或者下载微软的vcredist 2012 这样没用 正确的姿 ...
- 解决MinGW运行时提示丢失libgmp-10.dll
如何解决刚安装的MinGW提示"丢失xxx.dll" 解决方案: 1.配置环境变量,出现这种问题的主要原因是因为没配置环境变量,网上的大多数解决方案也是基于这个的. 2.安装包损坏 ...
- 运行程序显示:Could not find version 8.3 of the MCR.
- Anaconda中安装了Libtiff模块,但运行程序显示ModuleNotFoundError: No module named 'libtiff'
出现问题:Anaconda中已经用[conda install libtiff]命令安装了libtiff,并且利用命令[conda list]发现libtiff确实存在,但在pip中却不存在[pip ...
随机推荐
- Nginx配置静态文件服务从入门到精通
作者:三十三重天 博客:http://www.zhouhuibo.club 通过学习和分享的过程,将自己工作中的问题和技术总结输出,希望菜鸟和老鸟都能通过自己的文章收获新的知识,并付诸实施. 引言 使 ...
- css字体的属性
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- Stone Game, Why are you always there? HDU - 2999
题目链接:https://vjudge.net/problem/HDU-2999 题意:有N堆石头,两个人交替取,每次只能取连续的k个石子,最后没有石子取得人输. 思路:如果我们每次取靠边的k个,那么 ...
- Poj 3370
题目传送门:https://vjudge.net/problem/POJ-3370 题意:在n个数中找K个数使得他们的和为c的倍数. 题解:抽屉原理,同poj 2356 只不过写法上有所简化. 简化版 ...
- 工具 | Typora + PicGo-Core 自动上传图片到图床
0 前言 Markdown 是现在十分流行的标记式语言,在博客等很多场景中应用十分广泛.众所周知,Markdown 中的图片是以链接的形式存在的,不像 Word 等传统文本编辑器直接把图片嵌入文档中. ...
- exec 跟 source 差在哪?-- Shell十三问<第六问>
exec 跟 source 差在哪?-- Shell十三问<第六问> 这次先让我们从 CU Shell 版的一个实例贴子来谈起吧: 例中的提问是: cd /etc/aa/bb/cc 可以执 ...
- Python信息搜集
1.IP查询 IP查询是通过当前所获取到的URL去查询对应IP地址的过程.可以应用socket库函数中的gethostbuname()获取域名所对应的IP值,代码如下: 查询域名www.biadu.c ...
- 【Visual Studio调教小记录】C++指针靠前靠后??
本文地址:https://www.cnblogs.com/oberon-zjt0806/p/14631149.html 甜咸之争 经常写C++的基本上避不开使用指针,而且C++中指针类型的写法大体上有 ...
- JAVAEE_Servlet_16_HttpServletRequest中常用方法(三)
HttpServletRequest中常用方法(三) * 回顾ServletContext对象,ServletContext对象是Servlet上下文对象 - 创建ServletContext对象 S ...
- HTTP 基础(特性、请求方法、状态码、字段)
1. HTTP 简介(含义.特性.缺点) 2. HTTP 报文 3. GET 和 POST 4. 状态码 5. HTTP 头字段 1. HTTP 简介 HTTP 的含义 HTTP (HyperText ...