C++ Windows上的MinGW GCC 4.8.0不';不支持原子特性
根据C++11标准,像C++ Windows上的MinGW GCC 4.8.0不';不支持原子特性,c++,gcc,c++11,g++,atomic,C++,Gcc,C++11,G++,Atomic,根据C++11标准,像SomeType这样的可复制的类型应该完全适合std::atomic…而MSVCcl/EHsc t.cpp工作起来很有魅力。这是GCC的错误吗?如何解决这个奇怪的问题…在编译/链接时尝试传递-latomic。gcc t.cpp-std=c++11-latomic和g++t.cpp-std=c++11-latomic都没有任何效果。可能是您的gcc构建或链接器有问题,你应该指定你的mingw版本和你的工具链所采用的线程模型,mingw有不同的风格。它似乎是.@wesley.m
SomeType
这样的可复制的类型应该完全适合std::atomic…而MSVCcl/EHsc t.cpp
工作起来很有魅力。这是GCC的错误吗?如何解决这个奇怪的问题…在编译/链接时尝试传递-latomic
。gcc t.cpp-std=c++11-latomic
和g++t.cpp-std=c++11-latomic
都没有任何效果。可能是您的gcc
构建或链接器有问题,你应该指定你的mingw版本和你的工具链所采用的线程模型,mingw有不同的风格。它似乎是.@wesley.mesquita我看到了那篇文章,但发现它实际上没有解决。。。
#include <atomic>
struct SomeType
{
int a;
int b;
int c;
int d;
};
int main()
{
SomeType s1 = {1, 2, 3, 4};
std::atomic<SomeType> s2(s1);
SomeType s3 = s2.load();
return 0;
}
ccGPZTVk.o:t.cpp(.text$_ZNKSt6atomicI8SomeTypeE4loadESt12memory_order[__ZNKSt6atomicI8SomeTypeE4loadESt12memory_order]+0x21): undefined reference to `__atomic_load_16'
collect2.exe: error: ld returned 1 exit status