0

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

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

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

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

4

1 回答 1

1

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

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

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

(在 netbeans 中:属性/链接器/库/addLibraryFile)

于 2014-01-14T19:33:32.060 回答