0

我一直在谷歌搜索并尝试解决我运气不好的问题,所以我在这里问我的第一个问题。

我有一台装有 Lion (1.7.4)、Xcode 4 的 MacBook。我需要使用 Leopard 和 Xcode 3 制作的 C++ 应用程序。

该应用程序带有自己的 OpenCV.framework,并且是为 32 位架构制作的(如图 1 所示)

图 1:Xcode 项目中链接的 OpenCV.framework

我试图让它在Xcode 3上工作,它工作得很好,不需要安装 OpenCV 或其他东西(那是因为 OpenCV.framework 包含在项目中,对吧?)。

Xcode 4上它不起作用。这就是我尝试过的:

  • “按原样”运行它:即使 OpenCV.framework 在应用程序目录中,我也会收到以下错误:

dyld:库未加载:@executable_path/../Frameworks/OpenCV.framework/Versions/A/OpenCV
引用自:/Users/fabrizioborgia/Library/Developer/Xcode/DerivedData/suiviGUI-awhilvjpoqatfdansnpqcexpnxaw/Build/Products/Debug/suiviGUI .app/Contents/MacOS/suiviGUI 原因:找不到图像

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

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

ld:警告:忽略文件/usr/local/Cellar/opencv/2.4.1/lib/libopencv_calib3d.2.4.1.dylib,文件是为不受支持的文件格式构建的,它不是被链接的体系结构(i386)

  • 删除 OpenCV.framework,自己安装 OpenCV 2.4.1 (使用 make 和其他东西)并链接项目中的库。不,如果我在 32 位架构上运行程序,它会告诉我这些库不适用于 32 位架构。

无论如何,如果我尝试在 64 位上运行它,编译成功但程序无法正常运行。

伙计们,真的,我没有想法,也许我走错了方向,也许我只需要找到另一个 OpenCV.framework 或者我缺少一些链接设置,并且程序看不到框架。

任何人都可以帮忙吗?

4

2 回答 2

1

解决了这个问题。我应用了某种“divide et impera 方法”并在 SO 上提出了一个新问题,你可以在这里找到它:OS X Lion 上的 32-bit OpenCV?可能的?我发现 MacPorts 和 Homebrew 和 Cmake 方法默认安装本机架构(在我的情况下为 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 步:使用“Link Binary to Libraries”构建阶段链接 Xcode 项目中的全新库。

第6步:点击“运行”:)

于 2012-06-27T19:16:10.197 回答
0

我建议您使用 XCode 4(教程)在 Lion 中使用 OpenCV(如果还没有)。使用链接教程中的示例对其进行测试。一旦成功,然后从项目中复制您无法工作的类。

换句话说,放弃旧项目并从工作项目基础重新构建它。

于 2012-06-27T19:07:03.930 回答