前言

写了一个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”的更多相关文章

  1. 当你的程序在朋友的机器上显示丢失msvcr100d.dll的时候

    0. 给朋友发了个DEMO,收到提示:丢失 msvcr100d.dll 1. 一看是运行库文件,赶紧让朋友下载并安装vc++ 2010 redistribution,朋友反馈还是提示丢失这个dll文件 ...

  2. VS2010生成的文件在别的机器上运行提示“丢失MSVCR100D.dll”<转>

    用vs2010编写的程序经常会发生的一个问题.在自己的机器上运行的好好的,但是在别的机器上就会发生没有找到MSVCR100D.dll.这是 个很头疼的问题.对于一些代码量几百行的小程序,我不可能要求其 ...

  3. 安装wampserver遇到,无法启动此程序,丢失MSVCR110.dll

    这个问题遇到多次了,根据网上的解决办法,下载这个动态链接库文件,安装到指定位置重启系统后还是解决不了,其实这个文件有时候是存在的也会出现这个问题.问题截图如下 其实这个我认为是系统缺少了相关组组件的安 ...

  4. 64位电脑上启动程序出现丢失MSVCR110.dll的解决办法

    启动程序报错如下: 无法启动此程序,因为计算机中丢失MSVCR110.dll.尝试重新安装该程序以解决此问题. 应该很容易就搜索到,缺少这样的dll文件,是没有安装Visual C++ Redistr ...

  5. Xshell启动时显示丢失MSVCP110.dll解决方法

    成功安装xshell之后,在运行时却弹出“无法启动此程序,因为计算机中丢失MSVCP110.dll.尝试重新安装该程序以解决此问题”,很多人按照提示重装了还是出现同样的问题,本集教程将具体讲解如何处理 ...

  6. Xshell启动时显示丢失MSVCP110.dll

    重装系统,装完Xshell5启动时,出现丢失MSVCP110.dll文件 这种情况不要相信网上所说的什么下载“MSVCP110.dll”文件或者下载微软的vcredist 2012 这样没用 正确的姿 ...

  7. 解决MinGW运行时提示丢失libgmp-10.dll

    如何解决刚安装的MinGW提示"丢失xxx.dll" 解决方案: 1.配置环境变量,出现这种问题的主要原因是因为没配置环境变量,网上的大多数解决方案也是基于这个的. 2.安装包损坏 ...

  8. 运行程序显示:Could not find version 8.3 of the MCR.

  9. Anaconda中安装了Libtiff模块,但运行程序显示ModuleNotFoundError: No module named 'libtiff'

    出现问题:Anaconda中已经用[conda install libtiff]命令安装了libtiff,并且利用命令[conda list]发现libtiff确实存在,但在pip中却不存在[pip ...

随机推荐

  1. css实现京东顶部导航条

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

  2. ch2_8_3求解回文序列问题(递归实现)

    思路:回文序列中左右两边的值一定相等,所以可以将该问题分解为两边化为相同元素操作的次数和去掉两边相等元素后后剩下元素变成回文序列的操作次数. 题目: 如果一个数字序列逆置之后跟原序列是一样的就称这样的 ...

  3. 详解 ZooKeeper 数据持久化

    本文作者:HelloGitHub-老荀 Hi,这里是 HelloGitHub 推出的 HelloZooKeeper 系列,免费开源.有趣.入门级的 ZooKeeper 教程,面向有编程基础的新手. 项 ...

  4. 14、MyBatis教程之全部(包括所有章节)

    MyBatis 3.5.5 教程 1.环境准备 jdk 8 + MySQL 5.7.19 maven-3.6.1 IDEA 学习前需要掌握: JDBC MySQL Java 基础 Maven Juni ...

  5. kiali的服务降级和暗隐的有关问题

    记录两个问题 1. 服务在kiali的Applications 和 Workloads 显示为降级状态 2. 服务已经删除后在kiali的 Graph 显示依然存在 前言 istio部署到预发集群后, ...

  6. QT实现OPC_UA客户端程序以及与OPC_UA服务器通信

    1.OPC_UA服务器准备工作 1.关于OPC_UA服务器的搭建可以参考前面一篇文章:https://blog.csdn.net/xipengbozai/article/details/1150809 ...

  7. ADFS修改默认访问端口

    在安装Dynamics CRM部署IFD需要安装ADFS来进行身份验证.而ADFS默认会占用服务器的443端口.如果我们想自己使用443端口的话则需要修改ADFS的默认端口.(如果需要部署移动端的话还 ...

  8. 基于sinc的音频重采样(二):实现

    上篇(基于sinc的音频重采样(一):原理)讲了基于sinc方法的重采样原理,并给出了数学表达式,如下:                  (1) 本文讲如何基于这个数学表达式来做软件实现.软件实现的 ...

  9. Mybatis3源码笔记(二)SqlSession

    1. 核心层次 2. SqlSession 先从顶层的SqlSession接口开始说起.SqlSession是MyBatis提供的面向用户的API,表示和数据库的会话对象,用于完成对数据库的一系列CR ...

  10. surging 如何使用流媒体服务

    前言 随着直播行业大火,各种直播类产品和产品层出不穷,能够满足各方人员的需求和互动,也使得斗鱼.虎牙.抖音都随着直播业的大火而欣欣向荣, 大家也对直播平台了解不少,也参与使用,但是怎么样才能研发出视频 ...