关于对象文件在进行连接时的一些思考
来源:互联网 发布:python回调函数传参数 编辑:程序博客网 时间:2024/05/16 08:54
实例程序如下:
// a.c
// 编译指令:cl /c a.c ----> a.obj
int a;
// b.c
extern int a;
int main()
{
int b = a;
}
文件 b.c 编译后生成 b.obj 文件 ,extern 关键字表明整型变量(int) e 来自于外部的 .obj 文件或者.lib文件,所以为了正确得到该变量,在 a.obj 文件中必然有一些引用信息,可以在其他文件中正确得到 .obj 文件。
以上为 b.obj 的汇编代码注意其中的符号 _e ,在对象文件 b.obj 文件进行连接时就是要根据符号 _e进行查找和定位,从而得到e的值。
b.obj文件的汇编代码:
其中产生了符号 _e 所以在连接时a.obj才能正确找到e的值。正确连接后,变量e被分配到数据段,使用b.obj文件中的值进行正确的赋值,此时,变量e就有了确切的地址,符号_e自然就没有用了,所以连接(link a.obj b.obj)后生成的a.exe中就没有了符号_e.
变量(e)的修饰名称(_e),是与编译器设置相关的(和语言相关的),倘若变量e声明在a.c文件中,在某个.cpp文件中如若使用到e,则应该使用extern "C" int e来进行说明,这样其生产的obj文件对e的名称修饰就是_e,而不是C++语言的修饰规则。
- 关于对象文件在进行连接时的一些思考
- 关于面向对象的一些思考
- 关于面向对象设计的一些思考
- 一些关于面向对象的思考
- 关于sessions.ser文件的一些思考
- 【Android】导入第三方库时,关于so文件的一些思考
- 关于后台从阿里云获取文件的一些思考
- 【Android】导入第三方库时,关于so文件的一些思考
- 关于 javascript中原型和对象的在思考
- 关于mysql与eclipse进行连接的一些问题
- 关于 sizeof() 的一些思考
- 关于sizeof()的一些思考
- 关于useBean的一些思考
- 关于素质的一些思考
- 关于 sizeof() 的一些思考
- 关于 sizeof() 的一些思考
- 关于 sizeof() 的一些思考
- 关于 sizeof() 的一些思考
- android Dialog去掉标题栏 和边框
- arm反汇编方法
- Interface和abstract类不能含有Static方法
- 在linux环境上面,建立双机信任关系
- NAND Flash合约价走扬
- 关于对象文件在进行连接时的一些思考
- vba判断文件是否存在的两种方法
- Java中的抽象类和接口的区别与联系
- TouchEvent事件中的 速度跟踪类----------------VelocityTracker----
- jquery的DOM操作
- java中获取路径的方法
- JAVA运行原理
- [转载]图像处理和计算机视觉中的经典论文(转)
- tcpreplay(常用的测试流量 播放工具)