2013-03-07 42 views
4

我,包括iOS版的XCode项目unordered_map。最初,当我尝试链接时,我得到了新的和删除操作的错误,但是当我将“-lstdC++”添加到“其他链接器标志”时,这些消失了,但我留下了以下缺失的符号。__next_prime符号未定义

"std::__1::__next_prime(unsigned long)", referenced from: 

我尝试了C++标准语言/方言的不同组合,但无法让它消失。

任何想法库包括这个?

谢谢!

+1

该符号在很大程度上是可疑的是C++标准库的一个私有函数。 – 2013-03-07 19:12:20

+0

(对于那些你从我一个+1,我硬是不知道什么是错的...也许一个不匹配STDLIB版本?链接错误?什么...) – 2013-03-07 19:13:29

+0

一般来说,如果你是编译C++代码,C++库会由编译器为您链接。你如何调用工具链来达到这一点? – 2013-03-07 19:17:39

回答

7

此功能是一个私有方法LLVM的libc++http://www.opensource.apple.com/source/libcpp/libcpp-31/src/hash.cpp?txt。因此,您需要将您的C++标准库更改为libC++(支持C++ 11的LLVM C++标准库),或将链接器标志更改为-lc++

+0

(需要注意的是,在一般情况下,你应该避免添加标准库的链接标志自己。XCode中有一个选项,具体选择运行时库,只要你设置了编译器的选择正确。) – nneonneo 2013-03-07 19:27:32