C++ 静态链接库时,未定义对std::*某物*的引用

C++ 静态链接库时,未定义对std::*某物*的引用,c++,linux,c++11,g++,c++14,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::包装; 返回0; } 包是一个类。它使用LIZIP和ZL

我已经将一些代码编译到一个静态库中。此库中的所有内容都以Glow或GLOWE前缀开头。目前,我正在Linux(Ubuntu 14.04)中测试这个库。我做了一个简单的程序来检查我是否做的每件事都正确

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

    return 0;
}
#包括
内部主(空)
{
GLOWE::包装;
返回0;
}
包是一个类。它使用LIZIP和ZLIB(以及标准C++文件如字符串)。我链接libzip和zlib。当我尝试编译时,它失败了,出现了一些链接错误。

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

#include <string>

using namespace std;

int main(void)
{
    string a;
    a.resize(5000);
    return 0;
}
#包括
使用名称空间std;
内部主(空)
{
字符串a;
a、 调整大小(5000);
返回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

什么是g++标志?看起来你混合了ABI不兼容code@Alex标志是:g++-Wall-std=c++14-g-std=c++14-DGLIBCXX_USE_cx11_ABI=0-I../GlowE-c/home/thereclif/Pulpit/GlowTest/main.cpp-o obj/Debug/main.o g++-obin/Debug/GlowTest obj/Debug/main.o-lzip-lz-lstdc++../GlowE/GlowEngine/bin/Debug/libGlowEngine.a/usr/lib/x86_64-linux-gnu/libzip.a/usr/lib/x86_64-linux-gnu/libz.aI检查它是否适合我。不幸的是,它没有,但它让我查看了我的构建日志。结果是我用-m32编译了我的库,但我没有用相同的选项编译我的程序。