我很遗憾地提出一个问题,以不同的形式在整个地方重新出现,但是这让我撕裂了我的头发,我已经尝试了互联网所有黑暗角落的每一个建议。
我正在尝试使用Xt的Wt框架(用于基于Web的c ++应用程序)。它的头文件位于/ 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
选项Library Search Paths
选项Header Search Paths
现在,我正在抨击这个链接器错误:
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进行开发,所以我可能会遗漏一些明显的东西;如果有人能指出来,我会非常感激!
答案 0 :(得分:2)
好的,我终于明白了。事实证明,问题是我的程序是使用libc ++库编写的,而Wt库是使用旧的libstdc ++编写的。
为了解决这个问题,我使用libc ++重新编译了boost和Wt,而是通过更改他们的CMakeLists.txt文件,添加了行set(CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++")
。这产生了一吨警告,但似乎有效。
安装这些新版本后,我确保Xcode在其他C ++标志选项中有-L/usr/local/lib -I/usr/local/include
并且/usr/local/include
&amp;分别在“标头搜索路径”和“图书馆搜索路径”中/usr/local/lib
。然后,我将库添加到“带库的链接二进制文件”部分。这解决了我的问题。