2012-06-26 70 views
0

我一直在谷歌搜索,并试图解决我的问题几天我有幸运,所以我在这里问我的第一个问题。XCode 4和OpenCV库

我有一个狮子的MacBook(1.7.4)时,Xcode 4 我需要与Leopard和Xcode中做了一个C++应用程序中工作3

该应用程序本身自带的OpenCV.framework并为32位架构作出(如u可以看到图1)

Fig. 1: OpenCV.framework linked in the Xcode project

我试图得到它的工作在的Xcode 3,和它的作品就好了,没必要安装OpenCV或东西(即是因为OpenCV.framework包含在项目中,对吧?)。

Xcode 4它不起作用。这就是我已经试过:

  • 运行它“原样”:甚至认为OpenCV.framework是在应用程序目录,我得到以下错误:

dyld: Library not loaded: @executable_path/../Frameworks/OpenCV.framework/Versions/A/OpenCV
Referenced from: /Users/fabrizioborgia/Library/Developer/Xcode/DerivedData/suiviGUI-awhilvjpoqatfdansnpqcexpnxaw/Build/Products/Debug/suiviGUI.app/Contents/MacOS/suiviGUI Reason: image not found

  • 删除OpenCV.framework,通过MacPorts安装OpenCV并链接库。不,库是64位的,我的程序是32个。删除了OpenCV和MacPorts。

  • 删除OpenCV.framework,通过Homebrew(brew install opencv --build32)安装32位OpenCV并链接库。不,我得到以下错误,所以我假设这些库仍然是64位。对?删除了OpenCV和自制软件。

ld: warning: ignoring file /usr/local/Cellar/opencv/2.4.1/lib/libopencv_calib3d.2.4.1.dylib, file was built for unsupported file format which is not the architecture being linked (i386)

  • 取出OpenCV.framework,由我自己(随其品牌和东西)安装OpenCV 2.4.1 ,并在项目链接库。不,如果我在32位拱上运行程序,它告诉我这些库不适用于32位拱。

在任何情况下,如果我尝试在64位上运行它,编译成功但程序无法正常工作。

伙计们,真的,我出来的想法,也许我在错误的方向,也许我只能找到另一个OpenCV.framework或有一些链接设置,我错过了,程序没有看到框架。

任何人都可以帮忙吗?

+0

OpenCV.framework位于您的文件系统中位于何处? –

+1

它位于应用程序目录中。 – INElutTabile

+0

*哪个*应用程序目录? –

回答

1

解决了这个问题。我在这里问了一个新的问题,你可以在这里找到它:32-bit OpenCV on OS X Lion? Possible?,我发现MacPorts和Homebrew以及Cmake方法在默认情况下安装了本机体系结构(64位和64位)在我的情况)的OpenCV库位,我所需要的32位,所以我接着这些步骤:

步骤1:下载的OpenCV 2.4.0

步骤2:下载和安装CMake。

第3步:解开OpenCV包。

步骤4:OpenCV的封装内的单独的目录用于构建

mkdir build 
cd build 
cmake -G "Unix Makefiles" -D CMAKE_OSX_ARCHITECTURES=i386 -D CMAKE_C_FLAGS=-m32 -D CMAKE_CXX_FLAGS=-m32 .. 

(这将迫使32位编译)

make -j8 
sudo make install 

步骤5:链接全新库在Xcode项目中使用“Link Binary to Libraries”构建阶段。

第6步:命中“运行”:)

+0

xcode生成opencv2/opencv.hpp没有发现异常,当我尝试导入它。我该如何解决它? –

+1

你能给我更多的细节吗? 1)你遵循的步骤 2)关于yur系统和你的XCode的一些问题3)关于你的项目的一些事情 – INElutTabile

0

我建议你在Lion中使用XCode 4(tutorial)来获得OpenCV的工作(如果还没有的话)。使用链接教程中的示例测试它。一旦有效,然后从您无法工作的项目中复制所需的课程。

换句话说,放弃旧项目并从工作项目库重建它。