1

さまざまな形であちこちに再浮上する質問をして申し訳ありませんが、これには頭が痛くなり、インターネットの暗い隅々からのあらゆる提案を試しました.

Xcode で Wt フレームワーク (Web ベースの C++ アプリケーション用) を使用しようとしています。そのヘッダー ファイルは /usr/local/include にあり、そのライブラリ ファイル (およびブースト) は /usr/local/lib にあります。ターミナルでコンパイルできます

gcc -o hello testWt.cpp -lstdc++ -lwt.3.3.0 -lwthttp.3.3.0 -lboost_random -lboost_regex -lboost_signals -lboost_system -lboost_thread -lboost_filesystem -lboost_program_options -lboost_date_time

しかし、Xcode 内では運がありませんでした。私はもう試した:

  • OTHER_C++_FLAGSオプションに -I/usr/local/include を追加
  • /usr/local/lib をLibrary Search Pathsオプションに追加
  • /usr/local/include を追加Header Search Paths
  • すべてのライブラリ (.dylib および/または .a バージョンの両方) を「Link Binary with Libraries」セクションにドラッグします。
  • 上記のすべての組み合わせ

今、私はこのリンカーエラーに対して頭をぶつけています:

Ld /Users/charles/Library/Developer/Xcode/DerivedData/Test-dzrqjofmpnjowvcwtscacpwnhtqw/Build/Products/Debug/Test normal x86_64
cd /Users/charles/tmp/Test
setenv MACOSX_DEPLOYMENT_TARGET 10.7
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -L/Users/charles/Library/Developer/Xcode/DerivedData/Test-dzrqjofmpnjowvcwtscacpwnhtqw/Build/Products/Debug -L/usr/local/lib -F/Users/charles/Library/Developer/Xcode/DerivedData/Test-dzrqjofmpnjowvcwtscacpwnhtqw/Build/Products/Debug -filelist /Users/charles/Library/Developer/Xcode/DerivedData/Test-dzrqjofmpnjowvcwtscacpwnhtqw/Build/Intermediates/Test.build/Debug/Test.build/Objects-normal/x86_64/Test.LinkFileList -mmacosx-version-min=10.7 -stdlib=libc++ -lwt.3.3.0 -lwthttp.3.3.0 -lboost_atomic -lboost_chrono -lboost_context -lboost_date_time -lboost_exception -lboost_filesystem -lboost_graph -lboost_iostreams -lboost_locale -lboost_math_c99 -lboost_math_c99f -lboost_math_c99l -lboost_math_tr1 -lboost_math_tr1f -lboost_math_tr1l -lboost_prg_exec_monitor -lboost_program_options -lboost_python -lboost_random -lboost_regex -lboost_serialization -lboost_signals -lboost_system -lboost_test_exec_monitor -lboost_thread -lboost_timer -lboost_unit_test_framework -lboost_wave -lboost_wserialization -o /Users/charles/Library/Developer/Xcode/DerivedData/Test-dzrqjofmpnjowvcwtscacpwnhtqw/Build/Products/Debug/Test

Undefined symbols for architecture x86_64:

  "Wt::WApplication::makeAbsoluteUrl(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const", referenced from:
  vtable for HelloApplication in main.o

ld: symbol(s) not found for architecture x86_64

これ以上私は得ることができません。開発に Xcode を使用したのはこれが初めてなので、明らかな何かが欠けている可能性があります。誰かがそれを指摘できたら、私は信じられないほど感謝しています!

4

1 に答える 1

2

私はついにそれを手に入れました。問題は、私のプログラムが libc++ ライブラリを使用して書かれているのに対し、Wt ライブラリは古い libstdc++ を使用して構築されていることが判明しました。

これを修正するために、CMakeLists.txt ファイルを変更し、行を追加して、代わりに libc++ を使用して boost と Wt を再コンパイルしましたset(CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++")。これにより大量の警告が生成されましたが、機能しているように見えました。

これらの新しいビルドをインストールした後、Xcode-L/usr/local/lib -I/usr/local/includeの Other C++ Flags オプションと/usr/local/include&/usr/local/libがそれぞれ「Header Search Paths」と「Library Search Paths」にあることを確認しました。次に、ライブラリを「Link Binaries with Library」セクションに追加しました。これで私の問題は解決しました。

于 2013-07-02T15:43:49.293 に答える