编译Xcode项目失败,并出现以下错误: 'missing required architecture arm64 in file /Users/*/Git/ocr/opencv2.framework/opencv2'
如果我将架构(在Build Settings下)更改为(armv7,armv7s)而不是(armv7,armv7s),它运行良好。
如何更改opencv python构建脚本,为opencv2.framework添加arm64支持?
答案 0 :(得分:8)
最新的OpenCV iOS框架默认支持64位
可以从以下网址下载:OpenCV download page
答案 1 :(得分:4)
我修改了以下内容以使其构建,但我目前尚未安装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行opencv/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。
我想64bit应该是8,因为我没有测试编译的库是否适用于arm64,如果它运行不正常,我建议进一步调查。
答案 2 :(得分:2)
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
答案 3 :(得分:0)
尝试等下个月。将发布一个新的XCode,具有更强大的32/64位支持。
答案 4 :(得分: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)
答案 5 :(得分:0)
@Jan,我按照你的指示,但OpenCV仍然不能在arm64上运行。你做了如此详细而精彩的回答 - 为什么不在模拟器上查看它,看看你是否可以让它运行? : - )
FWIW,我认为它可能比看起来更难。在openCV stackoverflow克隆上,有迹象表明此问题可能是non-trivial。
答案 6 :(得分:0)
请使用以下命令,而不是使用官方网站的opencv安装指南中给出的终端命令。为我工作。
cd OpenCV-2.3.1
mkdir build
cd build
cmake -G“Unix Makefiles”..
请
sudo make install
答案 7 :(得分:0)
我遇到了类似的错误,但问题与arm64 coompilation.fixed无关。添加框架libc ++。dylib