【问题标题】:Do I need to explicitly include a common header file(in an include path folder) used in shared library?我是否需要明确包含共享库中使用的通用头文件(在包含路径文件夹中)?
【发布时间】:2013-06-07 06:01:11
【问题描述】:

我正在使用共享库,例如shr.so。这有一些头文件,比如shr_struct.h,其中包含我需要在我的程序中使用的结构,比如main_prog.c

我是否需要在包含路径中保留shr_struct.h 的副本,以便在main_prog.c 中声明shr_struct.h 中的结构类型对象?

【问题讨论】:

  • 嗯,你做到了。这就是头文件的目的。
  • 所以,我理解,编译器会在编译时搜索结构定义,因此无法从 .so 中找到相同的定义。这是因为 .so 仅在链接时出现。我说的对吗?

标签: c compiler-construction linker shared-libraries header-files


【解决方案1】:

如果您的main_prog.c 依赖于shr_struct.h,编译器将需要知道最后一个文件的位置。

现在,如果库安装在系统“标准”库路径中,您可能不必显式将此路径添加到编译器命令,因为它可能足够聪明,可以自行在标准系统路径中搜索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 2013-10-10
    • 2014-10-21
    • 2012-11-18
    • 2021-07-11
    • 1970-01-01
    相关资源
    最近更新 更多