.obj 与 .exe 的区别

来源:互联网 发布:逍遥西游服务端源码 编辑:程序博客网 时间:2024/05/16 07:13
  1. obj里存的是编译后的代码跟数据,并且有名称,所以在连接时会出现未解决的外部符号一说。当连成exe后便不存在名称的概念了,只有地址。lib就是一堆obj的组合。   
    编译器会默认链接一些常用的库,其它的需要你自己指定。
  2. 目标文件,一般是程序编译后的【二进制文件】,再通过链接器和资源文件链接就成可执行文件了。OBJ只给出了程序的【相对地址】,而可执行文件是【绝对地址】。CPP对应的二进制代码格式obj,是未经重定位的!
  3. 编译c 程序会产生obj 文件和exe 文件,我们都知道exe 文件是可执行文件,但obj 文件是做什么用呢?查了下资料发现obj 文件和exe 文件都是二进制数据文件,其中obj 文件是COFF 格式,exe 文件时PE 格式,那为什么不直接让obj 文件作为可执行文件呢,原来obj 文件格式是跨平台,通过link 可以将obj 链接为所使用系统能够识别格式,比如windows 系统中的exe 文件。
  4. 手动添加库文件:#pragma                comment(lib,"lib//tlib.lib")
  5. 参考http://blog.csdn.net/beryl_song/article/details/5556319

 

原创粉丝点击