c++ - shared_timed_mutex 在 OS X 10.11.2 上不可用?

标签 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)

这是我的 clang 版本信息:

 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++,而是可以坚持使用我的系统附带的标准库。

谢谢!

最佳答案

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

关于c++ - shared_timed_mutex 在 OS X 10.11.2 上不可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34533764/

相关文章:

c++ - 获取蒙版纹理的 OpenGL 直方图

c++ - 从泛型函数返回迭代器

c++ - 多线程错误

c++ - 读取成员时线程段错误

c++ - 我如何在 QT 中的无框窗口 QMainWindow 中添加调整大小选项?

c - 在 C 中的 pthread_create 中传递 int 作为第四个参数

.net - Interlocked.CompareExchange(double,double,double) 在 32 位操作系统中工作吗?

c++ - 为在 BeagleBone Black 上运行的 ARM 编译时,应用程序 boost::thread 卡在互斥锁上

php - 在 php 中获取锁的最佳方法

c++ - 使用 GLM 矩阵和 vector 乘法返回错误结果