2016-10-28 10 views
2

私は、ファイルシステムの拡張ライブラリに依存するQtプロジェクトを実行しようとしています。私はプロジェクトをビルドしようとすると、私は次のエラーを取得するMacでのQt:ファイルシステムライブラリの拡張 - アーキテクチャのシンボルが見つかりません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 

[Iブースト・ファイルシステムの静的ファイルを持って、ビルドディレクトリで、LIBアーカイブ、libzを-システム後押し]

をどのように解決するかを持っていますこの問題?

+0

あなたのブーストライブラリがあるディレクトリに 'LIBPATH'を設定しましたか? – Hayt

+0

@Haytはい、私はLIBPATHも指定しました – akashrajkn

+0

これは質問に追加してください。 – Hayt

答えて

3

libc++libstdc++の組み合わせでビルドしているようです。 と推測すると、の商品は、-stdlib=stdc++の商品をコンパイルする必要があります。

私はこのような状況

libstdc++を避けるために、単にデフォルトのSTDLIB(libc++)を使用するようにあなたの全体のコンパイルパスを変更助言するが、以下があります。

$ 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> 

は、libc++libstdc++の対話があなたのアプリを黙秘しないように設計されています。

+0

こんにちは、これは私が思ったように、私はもはやそのエラーを取得していません。今私は "プログラムを起動できませんでした。パスまたは権限が間違っていますか?"しかし、これは別の問題であるようです。 – akashrajkn

関連する問題