Chinaunix
标题:
LINUX动态库和程序函数重名的问题
[打印本页]
作者:
skywarship
时间:
2012-11-26 14:21
标题:
LINUX动态库和程序函数重名的问题
我有一个程序需要用到一个动态库,动态库和程序本身都用到了GSOAP,所以程序和动态库中有重名的函数,链接的
时候报函数重复定义。为了解决这个问题,给动态库中的导出函数加__attribute__((visibility("default")))前缀,
并增加链接参数-fvisibility=hidden,仅导出指定函数,隐藏其他函数,程序编译链接通过。
在调试时发现,动态库对GSOAP函数的调用实际是调用程序中的GSOAP函数,由于程序中的GSOAP版本和动态库
不一致,因此程序运行时会崩溃。为了解决这个问题,将动态库中与程序重名的所有GSOAP函数重新命名,在原函数
名前增加前缀,将动态库中对GSOAP函数的调用改为对新名字函数的调用,然后重新编译链接动态库和程序通过。
但调试时发现,即使对动态库中的GSOAP函数和相应调用做修改,程序运行时动态库对GSOAP函数的调用仍会调用
到程序中的对应原始名字的函数。
不知道有没有哪位高人遇到过这种情况。
作者:
skywarship
时间:
2012-11-26 16:37
试着把库改为静态库链接方式,程序可以正常运行。
不知道为什么动态库不行。
作者:
皇家救星
时间:
2012-11-26 23:35
是不是有其它地方有之前的动态库
作者:
socay2
时间:
2012-11-27 10:24
如何有效的避免自定义函数和第三方动态库中的函数重名,难道只有修改自己函数的名字吗?
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2