全网首发:由两个库同名函数,看LINUX动态库加载及调用

Posted 柳鲲鹏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全网首发:由两个库同名函数,看LINUX动态库加载及调用相关的知识,希望对你有一定的参考价值。

  最近的字体问题,有点怪:

  • 系统库叫freetype,吾库叫tsfreetype。
  • 执行程序先freetype,随后在使用时加载tsfreetype。功能出错。
  • 使执行程序强制依赖tsfreetype,功能正常。

  为什么出错?因为两个库有同名函数。具体来说相当于:

  • freetype库,B函数,调用C。
  • tsfreetype库,D函数,调用C。

  D函数调用C,并不一定调用的是自己库里的,而是看哪个库加载,就先调用哪个。也就是说,LINUX动态库的原则是先入为主。

  这个问题怎么解决呢?

  • 改变加载库顺序。强制依赖,指定搜索路径。
  • 函数改名。

以上是关于全网首发:由两个库同名函数,看LINUX动态库加载及调用的主要内容,如果未能解决你的问题,请参考以下文章

关于不同动态库中同名函数及变量解决方案

如果两个库提供同名函数产生冲突怎么办?

静态库介绍与简单演练及同名资源冲突解决

使用LD_PRELOAD拦截共享函数库的函数调用

Linux小练习打包并使用动静态库

Linux小练习打包并使用动静态库