【发布时间】:2017-03-27 11:59:52
【问题描述】:
我已经将我的一些代码编译到一个静态库中。该库中的所有内容都以 Glow 或 GLOWE 前缀开头。目前,我正在 Linux (Ubuntu 14.04) 中测试该库。我做了一个简单的程序来检查我是否做的一切正确。
#include <GlowSystem/Package.h>
int main(void)
{
GLOWE::Package package;
return 0;
}
GLOWE::Package 是一个类。它使用 libzip 和 zlib(以及标准 c++ 文件,例如字符串)。我链接了 libzip 和 zlib。当我尝试编译时,它会因一些链接错误而失败。 Build log (at pastebin)
我以为这些错误是由于libstdc++太旧导致的,但是这段代码可以编译:
#include <string>
using namespace std;
int main(void)
{
string a;
a.resize(5000);
return 0;
}
我束手无策,不知道该怎么办。我将不胜感激。
【问题讨论】:
-
什么是 g++ 标志?
-
看起来你在混合 ABI 不兼容的代码
-
@Alex 标志是:g++ -Wall -std=c++14 -g -std=c++14 -DGLIBCXX_USE_CXX11_ABI=0 -I../GlowE -c /home/thereclif/Pulpit /GlowTest/main.cpp -o obj/Debug/main.o g++ -o bin/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.a