以下是个人理解,水平有限,可能不太准确。有问题,麻烦指出。

demo:

a.so

void a_fun(void)
{
b_fun();
}

b.so

void b_fun(void)
{
//略
}

b.h

void b_fun(void)

  如果a库中的文件想要使用b_fun()函数,有两种方法,一种是include b.h,另一种是直接extern b_fun()函数。

include的方法:

  那么就需要编译a.so的时候,b.so要提前编译。存在先后顺序。否则会提示找不到b.h这个头文件。

extern的方法:

  编译的时候就可以单独各编各的。只需要在其他应用程序中链接这两个库的时候,a.so才会去找b_fun的函数实现。

  结论:所以两个库需要相互调用,最好不要直接include对方的头文件,否则会造成依赖关系。可以用extern或者注册回调函数的方式。

最新文章

  1. RHEL5.8配置开机自动挂载磁盘
  2. qt (5.60/5.70) 编译 QOCI 驱动
  3. Uncaught SecurityError: Failed to execute 'replaceState' on 'History': A history state object with
  4. 关于JS闭包,作者不详(转)
  5. 关于 Java Collections API 您不知道的 5 件事,第 1 部分
  6. 如何获得JVM执行过程中调用的方法名
  7. Java GUI使用exe4j打包exe文件
  8. 安装Hadoop及Spark(Ubuntu 16.04)
  9. 【stm32中断优先级--珍藏版】
  10. fzu 2257 saya的小熊饼干
  11. 简单聊聊java中如何判定一个对象可回收
  12. Git分支(1/5) -- 基本命令
  13. .Net 使用爬虫下载网络图片到本地磁盘
  14. oracle 远程连接不到dba用户
  15. 【杂谈】线程中断——Interrupt
  16. 前序遍历and中序遍历and后序遍历
  17. Openvpn配置文件详解
  18. 【Java安装】配置环境变量
  19. linux find 10天内改动过的文件
  20. Black Widow CodeForces - 704C (dp)

热门文章

  1. JZOJ 4872.集体照
  2. 益赛普等TNFi持续治疗强直性脊柱炎的长期疗效观察(≥3年)
  3. 依那西普治疗多关节型和系统型JRA的长期疗效[EULAR2007_SAT0397]
  4. WPF Xaml标签的一些特殊符号 如何输入
  5. 【PyQt5学习-01-】PyQt5 能做什么?要学什么?
  6. SystemVerilog Tutorial
  7. js-解决安卓手机软键盘弹出后,固定定位布局被顶上移问题
  8. K8s之Etcd的备份与恢复
  9. Mysql习题系列(三):单行函数
  10. 有监督的图像翻译——Pix2Pix