Linux下动态链接库调用时遇到的问题

来源:互联网 发布:韩孝周拍过的三级知乎 编辑:程序博客网 时间:2024/06/03 02:44

最近因项目需要,开始在Linux下开发动态链接库以及调用。 其中遇到了个关于gcc与g++编译器的问题。

 

首先我对a.cpp文件用g++编译生成动态链接库a.so, 接着用gcc编译b.c文件来调用生成的a.so中的函数时,却出现找不到函数a( )的错误信息,但是该问题在我用g++编译的时候却不会出现,而且能够正常运行。

 

究其原因,从gcc编译后的汇编文件b.s看出,调用函数的名称为a();但是从g++编译出来的汇编文件b.s中却发现函数名称是_Z5aii(),看来是不同编译器对于函数名称有不同的处理。

 

于是我将b.c文件中要调用的a()函数改为调用_Z5aii()函数,竟然就正常编译通过了,果然是因为函数名称不同而找不到动态链接库中对应函数的问题~~~~~

 

终于把这问题解决了,项目的开发又可以进入下一阶段了,真是可喜可贺,希望师弟们加油,能够顺利把项目完成,顺利毕业^_^

原创粉丝点击