OpenCV构建问题,找不到ext / atomicity.h

时间:2012-10-23 19:21:59

标签: ios xcode opencv

在构建包含OpenCV的项目时,我收到编译器错误抱怨<ext/atomicity.h>。环境是针对iOS的Xcode 4.5。它为模拟器编译良好,但在为设备构建时失败。这是错误文本:

/Users/Nick/projects/ios/opencv2.framework/Headers/core/operations.hpp:65:16: fatal error: 'ext/atomicity.h' file not found
      #include <ext/atomicity.h>

我正在使用opencv2.framework,使用说明here构建cmake。

2 个答案:

答案 0 :(得分:20)

默认情况下,XCode 4.5使用libc++ (LLVM C++ standard library with C++ 11 support)生成要构建的新项目。但OpenCV期望与GNU libstdc++ (GNU C++ standard library)构建。 <ext/atomicity.h>显然是GNU扩展,不属于LLVM libc ++标准库。

在项目的目标设置中,为C ++标准库设置选择libstdc++ (GNU C++ standard library)

很可能atomicity.h要求可以用opencv来解决,或者以LLVM libc ++兼容的方式完成。我没有探究过这一点,但如果有人知道如何做到这一点,我会感兴趣。

答案 1 :(得分:1)

我认为这是相反的方式。查看构建opencv2.framework的python脚本的输出,我得到了这个:

  

- C ++标志(发布): - stdlib = libc ++ -headerpad_max_install_names -fvisibility = hidden -fvisibility-inlines-hidden -fPIC -DNDEBUG -O3 [...]

很可能不是你想要的。因此,您需要使用libstdc ++编译框架或使用适当的lib编译您的应用程序。从我看到的情况来看,在使用libc ++构建我的应用程序时遇到了问题但可能是我。