0

I've been googling and trying for days to solve my problem I had n luck, so I'm asking my first question here.

I have a MacBook with Lion (1.7.4), Xcode 4. I need to work on a C++ application made with Leopard and Xcode 3.

The application comes with its own OpenCV.framework and is made for 32-bit Architecture (as u can see in Fig. 1)

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

I've tried to get it working on Xcode 3, and it works just fine, no need to install OpenCV or stuff (that is because the OpenCV.framework is included in the project, right?).

On Xcode 4 it's not working. That's what I've tried:

  • Run it "as is": even thought the OpenCV.framework is in the application directory, i get the following error:

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

  • Remove the OpenCV.framework, install OpenCV via MacPorts and link the libraries. Nope, the libraries are 64-bit, and my program is 32. Removed OpenCV AND MacPorts.

  • Remove the OpenCV.framework, install 32-bit OpenCV via Homebrew (brew install opencv --build32) and link the libraries. Nope, i get the following error, so I assume that the libraries are STILL 64-bit. Right? Removed OpenCV AND Homebrew.

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)

  • Remove the OpenCV.framework, install OpenCV 2.4.1 by myself (with make and stuff) and link the libraries in the project. Nope, if i run the program on 32-bit arch it tells me that the libraries are not for 32-bit arch.

In any case, if I try to run it on 64-bit the compilation is successful but the program doesn't work properly.

Guys, really, I'm out of ideas, maybe I'm on the wrong direction, maybe I just have to find another OpenCV.framework or there is some linking setting that I'm missing, and the program doesn't see the framwork.

Anyone can help?

INElutTabile
  • 866
  • 2
  • 20
  • 38

2 Answers2

1

Solved the problem. I applied some sort fo "divide et impera approach" and I asked a new question here on SO, you can find it here: 32-bit OpenCV on OS X Lion? Possible? and I found out that MacPorts AND Homebrew AND the Cmake Approach install by default the native architecture (64-bit in my case) OpenCV libraries, I needed the 32-bit, so i followed those steps:

Step 1: Download OpenCV 2.4.0

Step 2: Download and install CMake.

Step 3: Untar the OpenCV package.

Step 4: Make a separate directory inside the OpenCV package for building

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

(this will force the 32-bit compile)

make -j8
sudo make install

Step 5: Link the brand-new libraries in the Xcode project using the "Link Binary to Libraries" build phase.

Step 6: Hit "Run" :)

Community
  • 1
  • 1
INElutTabile
  • 866
  • 2
  • 20
  • 38
0

I would suggest that you get OpenCV working (if not already) in Lion with XCode 4 (tutorial). Test it with the example in the linked tutorial. Once that works, then copy over the classes you need from the project that you can't get working.

In other words, abandon the older project and rebuild it from a working project base.

spring
  • 18,009
  • 15
  • 80
  • 160