c++ - 无法在 64 位 mac 上为 Xcode 中的 C++ 项目构建 opencv 2.4

标签 c++ xcode macos opencv

环顾四周并尝试了我在 SO 上找到的每个选项后,我对如何在我的 Mac 上加载架构 x86_64 的 OpenCV 库感到有点困惑。下面是一些背景信息:

enter image description here

第一个文件夹包含 Android SDK。第二个是iPhone框架,它使用i386armv7架构。

现在,我想在 Xcode 中创建一个简单的“Hello World”C++ 应用程序,它需要适合 x86_64 架构的正确库。

我看过这个tutorial以及其他人发布的步骤如下:

  • mkdir 构建
  • 光盘构建
  • cmake -G "Unix Makefiles"..
  • 制作-j8
  • sudo 进行安装

对于所有版本(OpenCV-2.4.6.1 除外),该过程在“make -j8”处失败。我每次都得到同样的错误:

Linking CXX shared library ../../lib/libopencv_core.dylib

Undefined symbols for architecture x86_64:

  "___sincos_stret", referenced from:

      cv::RotatedRect::points(cv::Point_<float>*) const in matrix.cpp.o

      cv::RotatedRect::boundingRect() const in matrix.cpp.o

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

make[2]: *** [lib/libopencv_core.2.4.3.dylib] Error 1

make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2

make[1]: *** Waiting for unfinished jobs....

[ 28%] Building CXX object 3rdparty/openexr/CMakeFiles/IlmImf.dir/IlmImf/ImfThreading.cpp.o

[ 28%] Building CXX object 3rdparty/openexr/CMakeFiles/IlmImf.dir/IlmImf/ImfTileDescriptionAttribute.cpp.o

[ 28%] Building CXX object 3rdparty/openexr/CMakeFiles/IlmImf.dir/IlmImf/ImfTiledInputFile.cpp.o

[ 29%] Building CXX object 3rdparty/openexr/CMakeFiles/IlmImf.dir/IlmImf/ImfTiledMisc.cpp.o

[ 29%] Building CXX object 3rdparty/openexr/CMakeFiles/IlmImf.dir/IlmImf/ImfTiledOutputFile.cpp.o

[ 29%] Building CXX object 3rdparty/openexr/CMakeFiles/IlmImf.dir/IlmImf/ImfTiledRgbaFile.cpp.o

[ 29%] Building CXX object 3rdparty/openexr/CMakeFiles/IlmImf.dir/IlmImf/ImfTileOffsets.cpp.o

[ 29%] Building CXX object 3rdparty/openexr/CMakeFiles/IlmImf.dir/IlmImf/ImfTimeCode.cpp.o

[ 29%] Building CXX object 3rdparty/openexr/CMakeFiles/IlmImf.dir/IlmImf/ImfTimeCodeAttribute.cpp.o

[ 29%] Building CXX object 3rdparty/openexr/CMakeFiles/IlmImf.dir/IlmImf/ImfVecAttribute.cpp.o

[ 29%] Building CXX object 3rdparty/openexr/CMakeFiles/IlmImf.dir/IlmImf/ImfVersion.cpp.o

[ 29%] [ 30%] Building CXX object 3rdparty/openexr/CMakeFiles/IlmImf.dir/IlmImf/ImfWav.cpp.o

Building CXX object 3rdparty/openexr/CMakeFiles/IlmImf.dir/IlmImf/ImfZipCompressor.cpp.o

Linking CXX static library ../lib/libIlmImf.a

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../lib/libIlmImf.a(IlmThread.cpp.o) has no symbols

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../lib/libIlmImf.a(IlmThreadMutex.cpp.o) has no symbols

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../lib/libIlmImf.a(IlmThreadSemaphore.cpp.o) has no symbols

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../lib/libIlmImf.a(IlmThreadSemaphorePosixCompat.cpp.o) has no symbols

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../lib/libIlmImf.a(IlmThread.cpp.o) has no symbols

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../lib/libIlmImf.a(IlmThreadMutex.cpp.o) has no symbols

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../lib/libIlmImf.a(IlmThreadSemaphore.cpp.o) has no symbols

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../lib/libIlmImf.a(IlmThreadSemaphorePosixCompat.cpp.o) has no symbols

[ 30%] Built target IlmImf

make: *** [all] Error 2

pdls-mbp:build pdl$ 

使用 OpenCV-2.4.6.1,进程在“sudo make install”处失败,我收到以下错误:

Linking CXX shared library ../../lib/libopencv_core.dylib

Undefined symbols for architecture x86_64:

  "___sincos_stret", referenced from:

      cv::RotatedRect::points(cv::Point_<float>*) const in matrix.cpp.o

      cv::RotatedRect::boundingRect() const in matrix.cpp.o

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

make[2]: *** [lib/libopencv_core.2.4.6.dylib] Error 1

make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2

make: *** [all] Error 2

Lucys-MacBook-Pro:build pdl$ 

当我使用 Homebrew 安装 OpenCV 时,opencv 安装在 use/local/opt/opencv 中,我可以看到 lib 文件夹下的所有 dylib 文件:

Contents of lib folder

所有这些完全让我感到困惑,因为我认为我只需要一个 .a 库文件,不是吗?

我在/usr/local/Cellar/opencv/2.4.6.1/lib 中找到了与 HomeBrew 一起安装的 dylib 文件,但是当我尝试选择要添加的框架和库时,它们没有显示在列表中。相反,这就是我所看到的:

Choose frameworks and libraries to add:

Aldo,一直在关注这个MacPorts tutorial .

最佳答案

您是否考虑过使用 macports ?它有 opencv 2.4.8 available .

所以在installing macports之后,所有你经历过的废话,都被简化为:

$ sudo port selfupdate
$ sudo port install opencv

如果您想要一个或两个变体,例如 OpenCL 和 Python 支持,那么将是:

$ sudo port install opencv +opencl +python27

二进制文件/库/任何东西都将安装到 /opt/local/...

关于c++ - 无法在 64 位 mac 上为 Xcode 中的 C++ 项目构建 opencv 2.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21439384/

相关文章:

c++ - OpenCV 捕获循环视频/不检测最后一帧

c++ - 使用 InterlockedCompareExchange 无锁

c++ - 我想使用 c++/opencv 将一些数据写入 .txt 文件

c++ - 将指向对象的指针从一个列表移动到另一个列表而不破坏对象

ios - 如何使用 xcrun 选择要自动上传的应用程序?

iphone - Xcode 发送 HTTPS Soap 请求

python - wxPython 中的应用程序停靠图标

R:Mac 和 Ubuntu 之间的彩色 R 输出差异

c++ - 使用QT将一年中的日期转换为日期

ios - Testflight 无法加载应用程序