编译器的那些事儿

来源:互联网 发布:php 过滤空格 编辑:程序博客网 时间:2024/04/29 05:25

1,/MD和/MDd将是潮流所趋,/ML和/MLd方式请及时放弃,/MT和/MTd在非必要时最好也不要采用了。

2,静态链接 & 动态链接:

     静态库是把程序运行时需要使用的函数编译在一个二进制文件中,扩展名为.lib。当程序link时把静态库中的二进制数据和程序其它数据放到一起。程序运行时不在需要lib和dll文件的支持。这样做的坏处是开发出来的程序占用磁盘空间较大。特别是windows系统中本来就有或很多程序运行都需要的函数完全没有必要每次开发程序时都要使用各自的静态库。
     动态库在开发时仅是把dll中的函数名和参数放到应用程序中,应用程序运行时根据函数名和参数调用dll中的函数来运行,这样操作系统中的应用程序可以同时使用同一个dll。可以有效地节省硬盘空间,当然这样做使得程序设计更有层次。也有利于软件工程师的分工和信息安全。

   动态库中也会产生一个后缀名为.lib的引入库文件。

 

3,自己配置debug环境:

 

  • C/C++ :/ 常规 :/ 附加包含目录:添加依赖库包含路径
  • C/C++ :/ 常规 :/ 调试信息格式:程序数据库(/Zi)
  • C/C++ :/ 优化 :/ 优化:禁用(/Od)
  • C/C++ :/ 代码生成 :/ 运行时库:多线程调试DLL(/MDd)
  • 链接器 :/ 常规 :/ 输出文件:设置输出目录
  • 链接器 :/ 输入 :/ 附加依赖项:添加项目依赖的库名。
  • 链接器 :/ 调试 :/ 生成调试信息:是(/DEBUG)

4,配置Release环境,只说明一下与debug不同之处:

  • C/C++ :/ 常规 :/ 调试信息格式:禁用
  • C/C++ :/ 代码生成 :/ 运行时库:多线程DLL(/MD)
  • 链接器 :/ 调试 :/ 生成调试信息:否

 

原创粉丝点击