以下是个人理解,水平有限,可能不太准确。有问题,麻烦指出。
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或者注册回调函数的方式。
标签:头文件,void,库时,fun,so,extern,include From: https://www.cnblogs.com/zhuangquan/p/17143854.html