我正在尝试使用Eclipse CDT 4.5.0在OS X 10.11.2上使用C ++ 14中的新shared_timed_mutex
结构。 Xcode是7.2。我正在使用GCC C ++,其中包含以下选项:
-O0 -g3 -Wall -c -fmessage-length=0 -std=c++14
她是我得到的:
Invoking: MacOS X C++ Linker
g++ -o "MyProject" ./src/main.o
Undefined symbols for architecture x86_64:
"std::__1::shared_timed_mutex::shared_timed_mutex()", referenced from:
HashMap<int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<int> >::HashMap() in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
这是我的铿锵版信息:
Apple LLVM version 7.0.2 (clang-700.1.81)
Target: x86_64-apple-darwin15.2.0
Thread model: posix
我在网上搜索了一些建议,例如Reddit上的这个建议:
这非常接近我的问题,我已经尝试了这些建议,但我希望,我不必进行手动libc ++下载,但可以坚持使用我的系统附带的标准库。< / p>
谢谢!
答案 0 :(得分:2)
过去两年(我写这篇文章)Apple已经为他们的工具版本更新了libc ++头文件,但没有为libc ++源代码更新。 libc ++在std::shared_time_mutex
和shared_mutex.cpp中实现<shared_mutex>
。
答案 1 :(得分:2)
根据Apple dev presentation,shared_timed_mutex
将从macOS 10.12开始提供。见第52页