2012-06-26 96 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的工作(如果還沒有的話)。使用鏈接教程中的示例測試它。一旦有效,然後從您無法工作的項目中複製所需的課程。

換句話說,放棄舊項目並從工作項目庫重建它。