c++ - 在 xcode 4.5.2 中编译带有 C++11 支持的混合 Objective-C/C++ 项目时出现链接错误

标签 c++ xcode c++11 linker c++-standard-library

我正在尝试编译一个包含 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/

相关文章:

c++ - 为什么这段代码使用不同的参数传递策略没有显着的性能差异?

c++ - 使用 OpenMP 和减少优化外循环

c++ - Eclipse C++ 调试在 STL 中中断

c++ - 模板特化和静态局部变量

java - CMake 找不到 JNI

iphone - 无法在 iPhone 应用程序中运行后台操作

ios - 如何使用 swift 添加 uitableview 的按钮结束

c++ - 在不使用额外的整数指针参数的情况下,用节点左侧所有值的总和替换树的每个节点

ios - 为什么我不能在 Swift 中自己运行命令?

c++ - 如何在 constexpr 函数中强制出现编译错误,而不是让它衰减到非 constexpr 上下文中?