如何编译iOS7的OpenCV(arm64)

2024-09-28 03:20:24 发布

您现在位置:Python中文网/ 问答频道 /正文

编译Xcode项目失败,错误如下: 'missing required architecture arm64 in file /Users/*/Git/ocr/opencv2.framework/opencv2'

如果我将架构(在构建设置下)更改为(armv7,armv7s)而不是(armv7,armv7s),那么它工作得很好。

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


Tags: 项目ingit错误requiredframeworkusersfile
3条回答

我修改了下面的内容以使其得以构建,尽管我目前还没有一个arm64 iOS设备进行测试。

编辑:我还必须遵循https://stackoverflow.com/a/17025423/1094400

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

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

#include <unistd.h>

在现有include之后的顶部。

此外,打开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行中位于opencv/platforms/ios/build_framework.py的buildscript从以下位置更改:

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工作,如果它不能正常运行,我建议在这一点上进行进一步的研究。

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

下载地址:OpenCV download page

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

相关问题 更多 >

    热门问题