运行程序显示丢失“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 ...
随机推荐
- 看了 Spring 官网脚手架真香,也撸一个 SpringBoot DDD 微服务的脚手架!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 为什么我们要去造轮子? 造轮子的核心目的,是为了解决通用共性问题的凝练和复用. 虽然 ...
- 根据数据渲染DOM树形菜单——中途感想
根据数据渲染DOM树形菜单,这个需求做了几天了.一开始觉得用while也可以实现一层一层查找数据,但后来发现while还是做不到,因为我查找这个动作必须有进入有出来然后进入下一个条目,但while只能 ...
- python2文件开头两行
#!/usr/bin/python 或者 #!/usr/bin/env python 告诉操作系统python位置 # -*- coding:utf-8 -*- 设置文件编码为utf-8 (默认 ...
- C++单重继承分析
code[class*="language-"], pre[class*="language-"] { color: rgba(51, 51, 51, 1); ...
- 面试官:聊一聊SpringBoot服务监控机制
目录 前言 SpringBoot 监控 HTTP Endpoints 监控 内置端点 health 端点 loggers 端点 metrics 端点 自定义监控端点 自定义监控端点常用注解 来,一起写 ...
- 生产中常用的du命令
1. 介绍 du是用来查看文件或目录所占用磁盘空间的大小 du [-abcDhHklmsSx] [-L <符号连接>][-X <文件>][--block-size][--exc ...
- redis的线程模型
一.单进程模型来处理客户端的请求 Redis 基于 Reactor 模式开发了自己的网络事件处理器: 这个处理器被称为文件事件处理器(file event handler): 文件事件处理器是单线程的 ...
- 201871030134-余宝鹏 实验二 个人项目一 《D{0-1}KP》项目报告
项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 1.掌握软件项目个人开发流程2.掌握Github发布软件项目的操作方法 这个作业帮助我在哪些方面实现学习目标 1. ...
- Dynamics CRM各个版本的元数据浏览解决方案
https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/browse-your-me ...
- BUAA_2021_SE_READING_#2
项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 个人阅读作业#2 我在这个课程的目标是 通过课程学习,完成第一个可以称之为"软件"的项目 ...