Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 链接自身依赖于静态库的静态库时未定义的引用_C++_Gcc_Mingw_Static Linking - Fatal编程技术网

C++ 链接自身依赖于静态库的静态库时未定义的引用

C++ 链接自身依赖于静态库的静态库时未定义的引用,c++,gcc,mingw,static-linking,C++,Gcc,Mingw,Static Linking,我编写了一个静态库(在Windows7forx64中使用TDMCC4.8.1编译),它依赖于其他静态库。特定于Boost库(区域设置和系统)。 因为我正在构建一个静态库,所以我假设我所依赖的库会自动包含在final.a中,特别是因为我在代码中使用它们 但是,当我试图构建一个静态链接到前面提到的库的可执行文件时,仍然有一些未定义的对某些boost部分的引用,这些引用肯定在我的库中使用 有办法解决这个问题吗 非常感谢您的帮助。多谢各位 编辑: 我不够小心,因为我现在知道问题的原因了。我使用的是代码块

我编写了一个静态库(在Windows7forx64中使用TDMCC4.8.1编译),它依赖于其他静态库。特定于Boost库(区域设置和系统)。 因为我正在构建一个静态库,所以我假设我所依赖的库会自动包含在final.a中,特别是因为我在代码中使用它们

但是,当我试图构建一个静态链接到前面提到的库的可执行文件时,仍然有一些未定义的对某些boost部分的引用,这些引用肯定在我的库中使用

有办法解决这个问题吗

非常感谢您的帮助。多谢各位

编辑:
我不够小心,因为我现在知道问题的原因了。我使用的是代码块,构建归档的所有必要参数都在项目属性中声明。但是在构建我的库时,代码块甚至不调用链接器。相反,它调用ar.exe并传递项目的所有对象文件。这样,就不会包含任何外部库。因此,我也一直在寻找,告诉代码块以正确的方式构建库。

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

请输入。嗯,我的印象是我遇到了一些项目,其中外部库以某种方式包含在它们提供的库中。但我可能错了。一般来说,有没有办法在我自己的库中包含第三方库。有关详细信息,请参阅。您可以编写一个工具,将依赖的库分解回目标文件(使用
ar
,该程序首先构建静态库)。然后可以将生成的对象链接到更高级别的库中。但这不是任何人真正做的事情,你可能也不应该。好吧,我明白了。好的,然后回到一次链接所有依赖项。谢谢你的帮助