Linux下动态链接库调用时遇到的问题
2010-03-29 16:18
232 查看
最近因项目需要,开始在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()函数,竟然就正常编译通过了,果然是因为函数名称不同而找不到动态链接库中对应函数的问题~~~~~
终于把这问题解决了,项目的开发又可以进入下一阶段了,真是可喜可贺,希望师弟们加油,能够顺利把项目完成,顺利毕业^_^
首先我对a.cpp文件用g++编译生成动态链接库a.so, 接着用gcc编译b.c文件来调用生成的a.so中的函数时,却出现找不到函数a( )的错误信息,但是该问题在我用g++编译的时候却不会出现,而且能够正常运行。
究其原因,从gcc编译后的汇编文件b.s看出,调用函数的名称为a();但是从g++编译出来的汇编文件b.s中却发现函数名称是_Z5aii(),看来是不同编译器对于函数名称有不同的处理。
于是我将b.c文件中要调用的a()函数改为调用_Z5aii()函数,竟然就正常编译通过了,果然是因为函数名称不同而找不到动态链接库中对应函数的问题~~~~~
终于把这问题解决了,项目的开发又可以进入下一阶段了,真是可喜可贺,希望师弟们加油,能够顺利把项目完成,顺利毕业^_^
相关文章推荐
- Linux环境下Java调用MATLAB遇到问题
- Linux下调用.so库遇到的问题
- 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题1---cvNamedWindow调用报错的问题
- linux环境php调用sqlServer2000存储过程遇到的问题
- 学习c语言遇到的一些问题(1)(Linux)(调用库函数)
- linux调用ffmpeg 遇到的问题
- 实际试验遇到的一些python问题,包括图片格式转换,python中调用linux命令行,用python画图等等。
- java调用linux top命令的方法,以及遇到的一个问题
- Linux下动态链接库的创建和使用及C调用matlab动态库问题
- linux下qt调用phonon遇到的问题
- linux Eclipse上c++调用使用了tensorflow库的python程序遇到的问题及解决方法
- linux下通过jni编译CUDA代码生成动态链接库遇到的问题 nvcc -fPIC
- 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题1---cvNamedWindow调用报错的问题
- Linux环境下段错误的产生原因及调试方法小结 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是
- MIPS 架构 Linux driver编译时遇到的问题
- 关于Linux调用Windows dll问题的讨论
- linux下动态链接库(.so)的显式调用和隐式调用
- Linux学习时遇到的问题5
- 部署DTCMS到Jexus遇到的问题及解决思路---Linux环境搭建
- Linux上安装openfire时遇到一问题:UnknownHostException