加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – so files:从另一个文件调用的函数比预期的文件

发布时间:2020-12-16 07:05:41 所属栏目:百科 来源:网络整理
导读:让我们说我的可执行文件MyApp动态链接到so文件boost-system.so.我编译,一切都运行良好一段时间;我对boost系统函数的调用做了他们应该做的事情. 过了一会儿,我意识到我需要链接到另一个so文件,SomeAPI.so.然而,SomeAPI.so与boost-system.a静态链接,但是一个较
让我们说我的可执行文件MyApp动态链接到so文件boost-system.so.我编译,一切都运行良好一段时间;我对boost系统函数的调用做了他们应该做的事情.

过了一会儿,我意识到我需要链接到另一个so文件,SomeAPI.so.然而,SomeAPI.so与boost-system.a静态链接,但是一个较旧的,错误的版本,其功能与“my”boost-system(ofcourse)完全相同.现在,所有调用(来自MyApp和SomeAPI)将转到静态链接的版本SomeAPI(或者我的升级系统版本,取决于链接顺序,两者都对我不利).

我希望MyApp的调用能够进入我的boost-system版本,而SomeAPI则使用其静态链接的boost-system.a函数.在Windows上,这是它的工作原理.

我知道为什么没有发生这种情况,但除了将“my”boost-system中的命名空间重命名为本地之外,还有什么方法吗?

解决方法

使用 LD version scripts隐藏您不希望其他.so文件看到的函数名称.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读