macc++;编译器找不到<;tr1/无序地图>; 我猜今天的问题是“哪一个”C++编译器是MAC上的默认?
如果我做了macc++;编译器找不到<;tr1/无序地图>; 我猜今天的问题是“哪一个”C++编译器是MAC上的默认?,c++,macos,C++,Macos,如果我做了xcrun-find c++,它会说它在/Applications/Xcode.app/etc.中 当我在Xcode目录中搜索tr1/unordered\u map时,它就在那里 所以我很困惑。为什么我会收到一个生成错误,上面写着“致命错误:'tr1/unordered_map'文件未找到”?简短回答:使用-stdlib=libstdc++调用clang++,并且tr1头将在那里 长答案: 错误的原因和2组C++包括MaOS/XCODE有两种不同的C++标准库:一个旧的GNU LBST
xcrun-find c++
,它会说它在/Applications/Xcode.app/etc.
中
当我在Xcode目录中搜索tr1/unordered\u map
时,它就在那里
所以我很困惑。为什么我会收到一个生成错误,上面写着“致命错误:'tr1/unordered_map'文件未找到”?简短回答:使用
-stdlib=libstdc++
调用clang++,并且tr1
头将在那里
长答案:
错误的原因和2组C++包括MaOS/XCODE有两种不同的C++标准库:一个旧的GNU<代码> LBSTDC++<代码>,以及新的现代LLVM <代码> LBC++ < /P>
从macOS 10.12开始,默认值现在是libc++
,而libstdc++
已被弃用libstdc++
非常古老,是v4.2.1,早于C++11(因此tr1
头)。如果您打算长期使用此代码,那么至少值得花时间使其符合C++11标准(即#include
)
更新:Xcode 10不再允许针对libstdc++进行构建。更新您的代码库以使用标准的C++11头,或者使用Xcode 9(如果这不是一个选项)。不知道Mac,但
tr1
高喊“旧编译器”。“它在那里”->确切位置?为了编译,您运行了什么命令?或者你在XCode GUI中?你想编译成什么标准?如果<代码> -STD= C++ 11 ,那么必须丢失<代码> Tr1部分。@ Belp如果您明确地告诉编译器编译C,则不能使用C++头。请原谅,如果这是一个愚蠢的问题,但我如何将它设置为XCal码?抱歉,不确切地知道生成设置的调用。code>CLANG_CXX_LIBRARY是变量的名称。请注意,Xcode 10及以上版本不支持libstdc++。