我正在尝试编译一个包含 3 个支持 C++11 的项目的工作区。这组项目已使用 LLVM 编译器默认值成功编译和链接。此外,c++ 代码之前已经在许多编译器上编译,包括 g++、llvm、msvc、sun、irix 等,因此它是非常干净的代码。
在工作区build设置的 c++ 语言方言部分下,有 3 个行项目:
c语言方言
c++语言方言
C++标准库
使用设置:
c语言方言:编译器默认
c++语言方言:编译器默认
c++标准库:libc++(支持c++11的LLVM c++标准库)
我可以成功编译,但出现许多链接错误。有些来 self 们自己的函数,有些来自标准函数。以下是标准函数的链接错误示例:
(null):“std::string::find_last_of(char const*, unsigned long) const”,引用自: (空):“std::string::size() const”,引用自:
很明显我链接到了错误的标准库,所以我研究了更改上面的各种选项。将方言更改为 -std=c++11 甚至破坏了我的编译。我找不到适合我的组合。
你能指出什么可能是错误的吗?
编辑:我这样做的动机是我想在我的 c++ 代码中使用 std::thread 来与 objective-c 交互(并且让 c++ 代码仍然是可移植的)
最佳答案
XCode 4.5.2/OSX 10.8.2
我得到了这些
(null): "std::string::find_last_of(char const*, unsigned long) const",
referenced from: (null): "std::string::size() const", referenced from:
不同版本的 openCV 库。问题似乎是访问 C++ 标准库。在这种情况下,工作设置如下:
旧的库版本:
C Language Dialect GNU99[-std=gnu99]
C++ Language Dialect GNU++11[-std=gnu++11]
C++ Standard Library libstdc++ (GNU C++ standard library)
最近的库版本:
C Language Dialect GNU99[-std=gnu99]
C++ Language Dialect GNU++11[-std=gnu++11]
C++ Standard Library libc++ (LLVM C++ standard library with C++11 support)
将标准库规范切换到任一版本都会产生这些错误。
关于c++ - 在 xcode 4.5.2 中编译带有 C++11 支持的混合 Objective-C/C++ 项目时出现链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14246622/