静态链接库时对std :: * something *的未定义引用

时间:2017-03-27 11:59:53

标签: c++ linux c++11 g++ c++14

我已将部分代码编译到静态库中。此库中的所有内容均以Glow或GLOWE前缀开头。目前,我正在Linux(Ubuntu 14.04)中测试该库。我做了一个简单的程序来检查我是否正确地完成了所有事情。

#include <GlowSystem/Package.h>
int main(void)
{
    GLOWE::Package package;

    return 0;
}

GLOWE :: Package是一个类。它使用libzip和zlib(以及标准的c ++文件,例如string)。我链接libzip和zlib。当我尝试编译时,它失败并出现一些链接错误。 Build log (at pastebin)

我认为这些错误是由过旧的libstdc ++引起的,但是这段代码编译:

#include <string>

using namespace std;

int main(void)
{
    string a;
    a.resize(5000);
    return 0;
}

我在我的智慧&#39;结束,我不知道该怎么做。我将不胜感激。

1 个答案:

答案 0 :(得分:0)

看起来您的链接器选项不正确:

../GlowE/GlowEngine/bin/Debug/libGlowEngine.a /usr/lib/x86_64-linux-gnu/libzip.a /usr/lib/x86_64-linux-gnu/libz.a

尝试:

-l ../ GlowE / GlowEngine / bin / Debug / GlowEngine -l / usr / lib / x86_64-linux-gnu / zip -l / usr / lib / x86_64-linux-gnu / z