Qt(v4.7.4)とBoost(v1.47とv1.48を試しました)をC++プロジェクトで一緒に使用しているときに、<boost\filesystem.hpp>
を含むクラスによってリンカエラーが発生します。私はちょうどQtをセットアップして、コードが何の問題もなく動いていた。QtとBoostを使用するとリンカエラーが発生する
これはエラーメッセージです:
... OBJ:エラーLNK2001:未解決の外部シンボル「プライベート:静的クラスのstd :: codecvtのconst * &を後押し__cdecl :: filesystem3 ::パス:: wchar_t_codecvt_facetを(無効) "(ブースト@ filesystem3 @ wchar_t_codecvt_facetの@パス@@ CAAAPBV $ codecvt @ GDH @ STD @@ XZ)
... OBJ:??エラーLNK2001:未解決の外部シンボル" 無効__cdeclブースト:: filesystem3 :: path_traits :: convert(char const *、char const *、クラスstd :: basic_string、クラスstd :: allocator> &、クラスstd :: codecvt const &) "(?convert @ p ath_traits @ filesystem3 @ boost @@ YAXPBD0AAV?$ basic_string @ GU?$ char_traits @ G @ std @@ V?$ allocator @G @ 2 @ std @@ ABV?$ codecvt @ GDH @ 5 @@ Z)
... obj:エラーLNK2001:未解決の外部シンボル "void __cdecl boost :: filesystem3 :: path_traits :: dispatch(class boost :: filesystem3 :: directory_entry const &、クラスstd :: basic_string、クラスstd :: allocator> & 、クラスのstd :: codecvtのconstの&)」(?派遣@ path_traits @ filesystem3 GU?$ char_traits @ G @ STD @@ V @ブースト@@ YAXABVdirectory_entry @ 23 @ AAV?$のbasic_string @?$ 2 @ @ Gアロケータ@@ std @@ ABV?$ codecvt @ GDH @ 6 @@ Z)
... obj:エラーLNK2001:未解決の外部シンボル "void __cdecl boost :: filesystem3 :: path_traits :: convert(unsigned short const *、unsignedショートコンst * :: class_store :: class_string ::クラス:: str :: class :: str :: str :: str :: str :: str :: str :: str :: str :: str :: str :: str :: std :: @@ V $アロケータ@ D @ 2 @@のstd @@ ABV $ codecvt @ GDH 5 @@ Z)
... exeファイル@:??致命的なエラーLNK1120:未解決の外部4
EDIT:
:Here私はこの問題を持つ誰かがこの結論に来ました
これは本当にQtの問題です。ネイティブタイプとしてwchar_tを使用するには、同じコンパイラスイッチを使用して Qtを再コンパイルする必要があります。でも トラッカーにバグがあります:https://bugreports.qt.io/browse/QTBUG-9617一般的に
は、あなたは非常に慎重になると、彼らは非互換になるように、あなたのプロジェクトではwchar_t コンパイラ設定を混在させないでください必要があります。
私はQt設定/Zc:wchar_t
を再コンパイルしましたが、何の効果も見せませんでした。私はまだ同じエラーが発生します。
あなたはブーストをコンパイルしましたか?私はちょうどビルディングが必要なものにあまりにも精通していないが、いくつかの図書館はそうである – pezcode
はい。正しく覚えていれば、 'b2.exe'を使ってVisual Studio 2010用にコンパイルしました。 – Pedro
ブーストライブラリ全体を再コンパイルする必要がありますか?私は正確なビルド設定を覚えていませんが、boostをコンパイルしているときに 'build-in type'プロパティとして' wchar_tを扱うようにしました。 – Pedro