在OS X 10.11.2上不提供共享\u定时\u互斥? 我试图用Eclipse CDT 4.5.0在Oxx1.11.2上使用C++ 14的新代码< >代码> SyddTyMyMutoX < /Cuff>结构。Xcode是7.2。我使用GCC C++的选项如下: -O0 -g3 -Wall -c -fmessage-length=0 -std=c++14

在OS X 10.11.2上不提供共享\u定时\u互斥? 我试图用Eclipse CDT 4.5.0在Oxx1.11.2上使用C++ 14的新代码< >代码> SyddTyMyMutoX < /Cuff>结构。Xcode是7.2。我使用GCC C++的选项如下: -O0 -g3 -Wall -c -fmessage-length=0 -std=c++14,c++,multithreading,locking,c++14,C++,Multithreading,Locking,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::ch

她是我得到的:

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)
我在网上搜索了一下,找到了几条建议,例如Reddit上的这条:

?

这与我的问题非常接近,我尝试过这些建议,但我希望,我不必手动下载libc++,但可以使用系统附带的标准libs


谢谢大家!

在过去的两年里(我写这篇文章时),苹果公司更新了他们工具版本的libc++标题,但没有更新libc++源代码。libc++实现了
std::shared_time_mutex
和shared_mutex.cpp中的
std::shared_time_mutex

在过去的两年里(我写这篇文章时),苹果已经为他们的工具版本更新了libc++头,但没有更新libc++源代码。libc++在
和shared\u mutex.cpp中实现
std::shared\u timeu mutex

根据
的规定,从macOS 10.12开始,shared\u timed\u mutex
将可用。参见第52页

据了解,从macOS 10.12开始将提供
共享\u定时\u互斥锁
。请参阅第52页

确保您使用的是clang或最新的自制gcc版本,而不是标准的gcc版本,后者通过奇怪的stdlib配置映射到clang。您是对的,通过自制下载最新的gcc完成了这项工作。我通过
brew安装gcc5
下载了版本5。将eclipse中编译器和链接器的工具设置更改为g++-5后,我的代码编译包括
共享\u定时\u互斥体
。现在只剩下一个问题了。尽管我将5.2.0 include文件夹添加到项目的include路径中,Eclipse仍然找不到std::shared_timed_mutex的符号。关于那个有什么想法吗?谢谢!请确保您使用的是clang或最新的自制gcc版本,而不是标准的gcc,后者通过奇怪的stdlib配置映射到clang。您是对的,通过自制下载最新的gcc完成了这项工作。我通过
brew安装gcc5
下载了版本5。将eclipse中编译器和链接器的工具设置更改为g++-5后,我的代码编译包括
共享\u定时\u互斥体
。现在只剩下一个问题了。尽管我将5.2.0 include文件夹添加到项目的include路径中,Eclipse仍然找不到std::shared_timed_mutex的符号。关于那个有什么想法吗?谢谢!
 Apple LLVM version 7.0.2 (clang-700.1.81)
 Target: x86_64-apple-darwin15.2.0
 Thread model: posix