zoukankan      html  css  js  c++  java
  • visual studio运行时库MT、MTd、MD、MDd的研究

    在开发window程序是经常会遇到编译好好的程序拿到另一台机器上面无法运行的情况,这一般是由于另一台机器上面没有安装响应的运行时库导致的,那么这个与编译选项MT、MTd、MD、MDd有什么关系呢?这是msdn上面的解释:

    MT:mutithread,多线程库,编译器会从运行时库里面选择多线程静态连接库来解释程序中的代码,即连接LIBCMT.lib库

    MTd:mutithread+debug,多线程调试版,连接LIBMITD.lib库

    MD:MT+DLL,多线程动态库,连接MSVCRT.lib库,这是个导入库,对应动态库为MSVCRT.dll

    MDd: MT+DLL+debug,多线程动态调试库,连接MSVCRTD.lib库,对应动态库为MSVCRTD.dll

    开发多线程程序时(单线程本文不做讨论),需要选择MT、MTd、MD、MDd其中的一个。

    对于MT/MTd,由于连接运行时库是LIBCMT.lib/LIBCMTD.lib,这两个库是静态库,所以此种方式编译的程序,移到另一台机器上面也可以正常运行。

    但是对于MD/MDd,连接的是动态库,所以如果另一台机器上没有MSVCRT.dll/MSVCRTD.dll时,就提示缺少动态库这样的错误。

  • 相关阅读:
    192.168.*.* 的ip无法连接Mysql数据库的解决办法
    sql server从数据库表中读取不同的日期格式
    mysql数据库命令使用
    远程软件连接虚拟机慢解决方法
    VMware设置nat上网
    虚拟机用桥接上网
    delete和truncate区别
    LNMP
    zabbix
    cacti监控
  • 原文地址:https://www.cnblogs.com/LuckCoder/p/10949147.html
Copyright © 2011-2022 走看看