1

我很抱歉提出一个以不同形式在各地重新出现的问题,但这让我把头发扯掉了,我已经尝试了来自互联网所有黑暗角落的每一个建议。

我正在尝试将 Wt 框架(用于基于 Web 的 c++ 应用程序)与 Xcode 一起使用。它的头文件位于 /usr/local/include,其库文件(和 boost 的)位于 /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++ 构建的。

为了解决这个问题,我使用 libc++ 重新编译了 boost 和 Wt,而是更改了它们的 CMakeLists.txt 文件,添加了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 回答