两个静态库存在同名同封装函数,如何指定执行制定一个库的函数?

消失的荒漠 2018-01-12 03:40:21
如题:两个静态库,libA.a libB.a,都定义了一个函数func,封装一模一样,这两个静态库必须都要链接进去。

因为历史原因,目前工程实际上是需要运行libB.a下的函数func,而不是libA.a的。

链接器在链接的时候,就会把libA.a的func函数链接进去,libA.a的func函数实现会调用另外一个函数,而这个函数在目前工程中没有定义,最终导致未定义编不过。实际上工程是需要运行libB.a的func函数。

我现在只能手动把libA.a中实现func的.o删掉然后重新打包,才能编译过。

怎么做才可以让链接器只链接libB.a的func函数?
...全文
1172 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cocoabird 2018-01-18
  • 打赏
  • 举报
回复
不知道你为什么要设计两个一样的名字,自己给自己找麻烦
heronism 2018-01-16
  • 打赏
  • 举报
回复
你的方法就可以,也可以把不用的函数改名,或给其加上static
zhxianbin 2018-01-15
  • 打赏
  • 举报
回复
把 -lB 放前面试试
john_liqinghan 2018-01-15
  • 打赏
  • 举报
回复
#pragma GCC visibility push(hidden) #include <xx.h>//不期望调用的重名函数的头文件 #pragma GCC visibility pop #include <yy.h>//期望调用的重名函数的头文件

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧