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

时间:2013-07-29 20:56:04

标签: netbeans linker static-libraries

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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