g ++无法解析静态库中的非内联函数

时间:2014-01-13 07:42:39

标签: c++ visual-c++ g++ static-linking

我正在编写一个依赖于c / c ++第三方库的c ++程序。我在Windows和Linux上将第三方库编译为静态库。我的代码在linux上运行正常,但在Windows上有链接错误,表明我的代码无法解析第三方库中的符号。

经过一些调试后,我发现未解析的引用是该库中的非内联函数,并且可以解析内联函数(我已经测试过)。最初我认为这是gcc和msvc之间的不兼容性,因为我在尝试使用g ++通过mingw编译我的代码时使用msvc编译了.lib文件。我在Windows上用g ++重新编译了库,并且存在同样的问题。

知道可能是什么解决方案?

======编辑===============

只是为了澄清,第三方库并不是模板化的。

1 个答案:

答案 0 :(得分:0)

我发现了问题:我将第三方库中的lib * .a(在linux上生成)和 .lib(在Windows上生成)放在同一目录中,因为我想要这个代码跨平台的。在使用g ++在windows中编译我的代码时,它似乎优先链接到lib .a文件,导致“未解析的符号”错误。我删除了lib * .a文件,g ++现在链接到* .lib文件,并且工作正常。