我已將一些代碼編譯到靜態庫中。該庫中的所有內容都以Glow或GLOWE前綴開頭。目前,我正在Linux中測試這個庫(Ubuntu 14.04)。我做了一個簡單的程序來檢查我是否正確地做了一切。靜態鏈接庫時未定義對std :: * something *的引用
#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 ++標誌? – Alex
看起來像是在混合ABI不兼容代碼 – OMGtechy
@Alex標誌是:g ++ -Wall -std = C++ 14 -g -std = C++ 14 -DGLIBCXX_USE_CXX11_ABI = 0 -I ../ GlowE -c/home//clip/Turpit/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 – TheReclif