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

最近因项目需要,开始在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()函数,竟然就正常编译通过了,果然是因为函数名称不同而找不到动态链接库中对应函数的问题~~~~~

 

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值