当前位置: 技术问答>linux和unix
linux下加载.so文件的问题
来源: 互联网 发布时间:2016-08-22
本文导语: 我有一个以前的程序是modif做的。我现在写了一个qt的.so文件。我想让modif程序加载.so这个dll文件, 我用 handle =dlopen(test.so, RTLD_LAZY )打开文件。然后再用 fun =dlsym(handle,"function")得到方法。程序运行到此处都是正...
我有一个以前的程序是modif做的。我现在写了一个qt的.so文件。我想让modif程序加载.so这个dll文件,
我用 handle =dlopen(test.so, RTLD_LAZY )打开文件。然后再用 fun =dlsym(handle,"function")得到方法。程序运行到此处都是正常的但是我执行方法(*fun)()的的时候就出错了.请问一下各位高手这是什么问题。(modif是用c写的,qt是用C++写的)怎样解决.谢谢
我用 handle =dlopen(test.so, RTLD_LAZY )打开文件。然后再用 fun =dlsym(handle,"function")得到方法。程序运行到此处都是正常的但是我执行方法(*fun)()的的时候就出错了.请问一下各位高手这是什么问题。(modif是用c写的,qt是用C++写的)怎样解决.谢谢
|
例子:
gcc -rdynamic -s -o -ldl myapp test.c
还有楼上说的 也是有道理的 要限制一下c++ 的 name mangling 机制。。。
gcc -rdynamic -s -o -ldl myapp test.c
还有楼上说的 也是有道理的 要限制一下c++ 的 name mangling 机制。。。
|
简单 你可能忘了 在应用程序里 的makefile gcc 编译要加 -rdynamic
|
C++的实现里面声明了extern C了吗?
可以参考一下这里:
http://www.cppblog.com/Macaulish/archive/2008/06/17/53689.html
可以参考一下这里:
http://www.cppblog.com/Macaulish/archive/2008/06/17/53689.html
|
up