在 netbeans 的静态库中包含静态库

Posted

技术标签:

【中文标题】在 netbeans 的静态库中包含静态库【英文标题】:include static library in a static library in netbeans 【发布时间】:2013-07-29 20:56:04 【问题描述】:

我将静态库的标头“libChild.a”包含到第二个静态库“libParent.a”中,然后将父级的子级链接到我的主应用程序中,但获得符号的“未定义引用”在子级中定义的父级中。我正在使用 netbeans 7.0 创建两个静态库,然后将 .a 文件复制到 /usr/lib 并将头文件复制到 /usr/include。我使用 netbeans 项目属性将这两个库添加到主项目中。

有趣的是,子库直接在主项目代码中使用,并且那些引用编译得很好。只有在父静态库中使用子级会导致未定义的引用错误。

一种解决方案是使用“ar”工具合并静态库。不幸的是,这是不切实际的,因为每个版本都有多个版本,并且必须为每个组合单独进行合并,然后重新合并每次在任一版本中进行更改时..

那么,为什么 netbeans 构建在主代码中正确链接对子符号的引用,而不是在静态父库代码中?我如何让它发挥作用?

【问题讨论】:

【参考方案1】:

刚刚遇到同样的问题,这是基于一个误解。

事实上,静态库不会相互链接,而是由它们的父应用程序链接在一起。

解决方案很简单,只需将所有必需的库添加到主应用程序的链接器配置中即可。库之间的父/子关系无关紧要。

(在 netbeans 中:properties/linker/libraries/addLibraryFile)

【讨论】:

以上是关于在 netbeans 的静态库中包含静态库的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 静态库中包含框架?

iOS 静态库 - 是不是可以在我的库中包含 AdSupport.framework?

重复符号:在静态库 B 中包含静态库 A,在 XCode 项目中也包含库 A 和 B

在 iOS 的动态框架中包含静态库

在动态框架中包含静态库的公共头文件

在 CMAKE 中包含来自 Android 项目的不同文件夹的静态库