2

编译 Xcode 项目失败并出现以下错误: “文件 /Users/ * /Git/ocr/opencv2.framework/opencv2中缺少所需的架构arm64”

如果我将架构(在构建设置下)更改为(armv7,armv7s)而不是(armv7,armv7s),它运行良好。

如何更改 opencv python 构建脚本,为 opencv2.framework 添加 arm64 支持?

4

8 回答 8

8

最新的 OpenCV iOS 框架默认支持 64 位

可在:OpenCV 下载页面下载

于 2014-03-21T16:54:10.823 回答
5

我修改了以下内容以使其构建,尽管目前我还没有 arm64 iOS 设备要测试。

编辑:我还必须关注https://stackoverflow.com/a/17025423/1094400

假设“opencv”是包含来自 Github 的 opencv 源的文件夹:

在每个gzlib.c, gzread.c, gzwrite.c位于opencv/3rdparty/zlib/添加:

#include <unistd.h>

在现有包含之后的顶部。

另外打开opencv/platforms/ios/cmake/Modules/Platform/iOS.cmake并更改第 88 行:

set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_BIT)" CACHE string  "Build architecture for iOS")

至:

set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_INCLUDING_64_BIT)" CACHE string  "Build architecture for iOS")

此外,将第 99 行和第 100 行的 buildscriptopencv/platforms/ios/build_framework.py从:

targets = ["iPhoneOS", "iPhoneOS", "iPhoneSimulator"]
archs = ["armv7", "armv7s", "i386"]

至:

targets = ["iPhoneOS", "iPhoneOS", "iPhoneOS", "iPhoneSimulator", "iPhoneSimulator"]
archs = ["armv7", "armv7s", "arm64", "i386", "x86_64"]

生成的库将包括以下内容:

$ xcrun -sdk iphoneos lipo -info opencv2
    Architectures in the fat file: opencv2 are: armv7 armv7s i386 x86_64 arm64

虽然我仍然担心opencv/platforms/ios/cmake/Toolchain-iPhoneOS_Xcode.cmake在第 14 行和第 17 行中将数据指针的大小定义为 4。我猜 64 位应该是 8,所以我还没有测试编译的库是否适用于 arm64 我会如果运行不正常,建议此时进行进一步调查。

于 2013-11-22T11:27:37.420 回答
2

micahp 的答案几乎是完美的,但错过了模拟器版本。所以修改platforms/ios/build_framework.py 为:

targets = ["iPhoneOS", "iPhoneOS", "iPhoneOS", "iPhoneSimulator", "iPhoneSimulator"]
archs = ["armv7", "armv7s", "arm64", "i386", "x86_64"]

您需要下载 Xcode 5.0.1 的命令行工具,然后运行

python opencv/platforms/ios/build_framework.py ios
于 2013-11-05T18:06:27.830 回答
0

将“build_frameworks.py”修改为:

def build_framework(srcroot, dstroot):
    "main function to do all the work"

    targets = ["iPhoneOS", "iPhoneOS", "iPhoneOS", "iPhoneSimulator"]
    archs = ["armv7", "armv7s", "arm64", "i386"]
    for i in range(len(targets)):
        build_opencv(srcroot, os.path.join(dstroot, "build"), targets[i], archs[i])

    put_framework_together(srcroot, dstroot)
于 2013-10-16T01:50:37.880 回答
0

我遇到了类似的错误,但问题与 arm64 cocompilation.fixed 添加框架 libc++.dylib 无关

于 2014-11-17T18:39:51.650 回答
0

不要使用官网 opencv 安装指南中给出的终端命令,而是使用以下命令。为我工作。

cd OpenCV-2.3.1

mkdir 构建

光盘构建

cmake -G "Unix Makefiles" ..

制作

须藤使安装

于 2014-01-13T07:18:37.970 回答
0

试着等下个月。将发布一个新的 XCode,支持更强大的 32/64 位。

https://developer.apple.com/news/index.php?id=9162013a

于 2013-09-24T13:14:20.437 回答
0

@Jan,我按照您的指示进行操作,但 OpenCV 仍然无法在 arm64 上运行。您给出了如此详细而精彩的答案 - 为什么不在模拟器上检查一下,看看您是否可以让它运行?:-)

FWIW,我认为这可能比看起来更难。在 openCV stackoverflow 克隆上,有迹象表明这个问题可能不是微不足道的

于 2013-12-06T03:57:01.667 回答