2016-10-28 79 views
2

我想運行一個依賴boost文件系統庫的Qt項目。Mac上的Qt:boost文件系統庫 - 找不到架構x86_64的符號

Qt version: 5.6 
Mac OSX 10.12 
Xcode version: 8.0 
Boost: 1.54 

當我嘗試生成項目,我得到以下錯誤,

"typeinfo for std::codecvt<wchar_t, char, __mbstate_t>", referenced from: 
     typeinfo for boost::filesystem::detail::utf8_codecvt_facet in libboost_filesystem-mt.a(utf8_codecvt_facet.o) 

ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

我看了上堆棧溢出(123)多線程,但它們都沒有似乎解決了我的問題。

我.pro文件有如下語句

macx:INCLUDEPATH += ../../boost_1_54_0 
macx:LIBPATH += ../../boost_1_54_0 
macx:LIBS += -lboost_filesystem-mt -lboost_system-mt -larchive -lz 

[我有升壓文件系統的靜態文件,提升系統,LIB存檔,libz進行build目錄]

我該怎麼解決這個問題?

+0

您是否將'LIBPATH'設置爲boost庫所在的目錄? – Hayt

+0

@Hayt是的,我指定了LIBPATH也 – akashrajkn

+0

你應該加入這個問題,然後,因爲它是一個相關的信息給他人。 – Hayt

回答

3

這聽起來像是你在搭建libc++libstdc++。在猜測你需要編譯你的產品與國旗-stdlib=stdc++

雖然我會建議改變你的整個編譯路徑,只使用默認STDLIB(libc++),避免只是這種情況

libstdc++有以下幾點:

$ nm /usr/lib/libstdc++.6.0.9.dylib | c++filt | grep 'std::codecvt<wchar_t, char, __mbstate_t>' | grep typeinfo 
0000000000051710 S typeinfo for std::codecvt<wchar_t, char, __mbstate_t> 
000000000004b760 S typeinfo name for std::codecvt<wchar_t, char, __mbstate_t> 

libc++有以下幾種:

$ nm /usr/lib/libc++.dylib | c++filt | grep '::codecvt<wchar_t' | grep typeinfo 
0000000000057ff0 S typeinfo for std::__1::codecvt<wchar_t, char, __mbstate_t> 
0000000000052070 S typeinfo name for std::__1::codecvt<wchar_t, char, __mbstate_t> 

請注意介入::__1::,它旨在防止libc++libstdc++交互從靜默中斷您的應用程序。

+0

嗨,這工作我認爲,我不會再犯這個錯誤。現在我收到「無法啓動程序,路徑或權限錯誤?」但這似乎是一個不同的問題。 – akashrajkn

相關問題