OS X 10.11.2上没有shared_timed_mutex?

时间:2015-12-30 16:59:09

标签: c++ multithreading locking c++14

我正在尝试使用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上的这个建议:

https://www.reddit.com/r/cpp_questions/comments/3ejfkr/is_c14s_stdshared_timed_mutex_available_on_os_x/

这非常接近我的问题,我已经尝试了这些建议,但我希望,我不必进行手动libc ++下载,但可以坚持使用我的系统附带的标准库。< / p>

谢谢!

2 个答案:

答案 0 :(得分:2)

过去两年(我写这篇文章)Apple已经为他们的工具版本更新了libc ++头文件,但没有为libc ++源代码更新。 libc ++在std::shared_time_mutex和shared_mutex.cpp中实现<shared_mutex>

答案 1 :(得分:2)

根据Apple dev presentationshared_timed_mutex将从macOS 10.12开始提供。见第52页