https://www.jianshu.com/p/f43afc1d5946

VC项目属性→配置属性→C/C++→代码生成→运行时库 可以采用的方式有:多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)、单线程(/ML)、单线程调试(/MLd)。

目前Win7、Win10等,选择MD问题不大,但是XP等一些比较老的系统需要选择MT

两者的区别

/MT是 "multithread, static version ” 意思是多线程静态的版本,定义了它后,编译器把LIBCMT.lib 安置到OBJ文件中,让链接器使用LIBCMT.lib 处理外部符号。

/MD是 "multithread- and DLL-specific version” ,意思是多线程DLL版本,定义了它后,编译器把 MSVCRT.lib 安置到OBJ文件中,它连接到DLL的方式是静态链接,实际上工作的库是MSVCR80.DLL。

即:

静态运行时库:LIBCMT.lib

动态运行时库:MSVCRT.lib + MSVCR80.DLL

所以,当你用CMAKE生成工程文件时,若CMAKE是用/MT生成的(查看工程原始目录的CMakeLists.txt),则它所调用的运行时库为:LIBCMT.lib,若生成的工程的运行时库(Runtime Library)你选择/MD,则此工程在编译后链接的时候,将会调用动态运行时库:MSVCRT.lib + MSVCR80.DLL,明显,两次对同一个某运行时库里的函数调用的库不同,则会出现重定义的错误。若此工程生成的是库文件,则其他工程调用此库时也必须是/MT。

最新文章

  1. mysql中profile的使用
  2. chromium 一些设置 --插件安装
  3. 【转】linux root用户ifconfig报command not found
  4. Jsoup 的认识和简单使用
  5. Python正则表达式2
  6. UC全屏
  7. canvas入门
  8. 关于k-means聚类算法的matlab实现
  9. Struts1.x教程:配置文件总结
  10. 有两个数据库A和B,数据库A中有表a,如何把表a映射到数据库B中,sql 2005
  11. 初探 discuz
  12. C语言/原子/编译,你真的明白了吗?
  13. python txt文件的写入和读取
  14. nmap命令总结
  15. 第五章Bookstrap
  16. Shell 文件测试运算符
  17. 12-openldap使用AD密码
  18. pgm11
  19. Django中提供了6种缓存方式
  20. java EE ME SE有什么关系

热门文章

  1. js文本公告滚动展示,图片轮播....
  2. MySQL提供的几种检索行数据的优化方式
  3. PyCharm Django 显示一个简单页面
  4. python day1 (afternoon)购物清单
  5. springboot 整合 web 项目找不到 jsp 文件
  6. (错误)启动ActiveMQ报错:Transport Connector could not be registered in JMX: java.io.IOException: Failed to bind to server socket: stomp://0.0.0.0:61613?
  7. 在论坛中出现的比较难的sql问题:5(row_number函数 分页、随机返回数据)
  8. testwebsite
  9. js循环及for-in , for-of的区别
  10. 树莓派二:apt-get出错、蓝牙、汉化、输入法