當試圖與使用Xcode 6.3.2構建的動態庫鏈接時,我所有對參數爲std: :字符串拒絕鏈接:從我的dylib調用具有std :: string params的成員函數會創建「未定義的符號」錯誤
Undefined symbols for architecture x86_64:
「MyClass::Bogus(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool)」,…
的dylib的.h文件中被包括在內,大衆類成員的原型爲:
int Bogus(std::string& aStringRef, bool verbose);
有趣的是,如果我改變第一性病的類型: :將字符串參數設置爲long(並且將其與第一個參數一樣長),則不存在鏈接錯誤。所以我知道我確實與我建立的dylib連接。
對於我的dylib,Apple LLVM 6.1 C++標準庫設置爲默認(libstdC++)。
我在哪裏進行調用從本身是一個名爲.dylib,並正在編制和Xcode中沒有聯繫,而是完全從生成文件的代碼。 C++的使用從makefile編譯的版本是:
看起來可疑我Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.4.0
Thread model: posix
的一件事是調用代碼使用「-std = C++ 1Y」編譯,可以使用標準用於C++的庫14。爲調用程序鏈接的標準庫與我爲構建dylib選擇的標準庫之間是否存在衝突?(我的dylib代碼正在使用編譯器方言= GNU ++ 98編譯)
它看起來像你的代碼與的libC++編譯。 –
@KerrekSB - 在我的鏈接dylib上運行工具-L顯示:c \t /usr/lib/libstdc++.6.dylib(兼容性版本7.0.0,當前版本104.1.0) – SMGreenfield
是/usr/lib/libstdc++.6。 dylib一個符號鏈接的任何機會? –