2014-01-16 56 views
3

我写了一个静态库(在Windows 7中为T64编译TDM-gcc 4.8.1),它依赖于其他静态库。提升库(区域设置和系统)是特定的。 因为我建立一个静态库我认为我dependend上的库将自动包含在我的最后.A,特别是因为我在我的代码中使用它们。未定义的引用链接自己的静态库时,它本身依赖于静态库

但是,当我试图建立一个静态链接到我前面提到的库中还存在一些升压部分未定义的引用,那肯定是在我的图书馆使用的可执行文件。

有没有办法解决呢?

任何帮助很乐意欣赏。谢谢

编辑: 我没有小心的话,因为我现在知道是什么原因导致的问题。我正在使用代码块,并且在项目prooperties中声明了构建存档的所有必要参数。但是在构建我的库时,代码块甚至不会调用链接器。相反,它调用ar.exe并传递我的项目的所有对象文件。这样,就不会包含任何外部库。所以,我也非常期待告诉代码块以正确的方式构建库..

回答

4

您的可执行文件需要链接所有相关库,包括它直接依赖的库,以及它间接依赖的库上。当你链接一个静态库时,你通常不会在其中嵌入其他静态库。

+0

坦克您的输入。嗯,我的印象是,我遇到了一些外部图书馆的外部图书馆,这些图书馆以某种方式包含在他们提供的图书馆中。但我可能在这里错了。一般来说,有没有办法将第三方库包含在我自己的库中? – UsYer

+0

不是。见http://stackoverflow.com/questions/2157629/linking-static-libraries-to-other-static-libraries的细节。你可以编写一个工具将你依赖的库分解成目标文件(使用'ar',这是首先构建静态库的相同程序)。然后,您可以将生成的对象链接到更高级别的库中。但这不是任何人真正做到的,你也不应该这样做。 –

+0

好的,我明白了。那么回到一次链接所有的依赖关系。谢谢你的帮助 – UsYer