gpt4 book ai didi

ios - 如何在 iOS 项目中包含 C 库 (VLFeat 0.9.21)?

转载 作者:行者123 更新时间:2023-12-05 07:36:47 24 4
gpt4 key购买 nike

我需要采取哪些必要步骤来编译 VLFeat(一个开源 C 库)并将其包含在我的 iOS 项目中?这是我到目前为止发现的:

我对编译和链接过程不是很熟悉,但据我目前的了解,我需要为arm64架构编译VLFeat才能在iPhone上运行。

关于如何在 XCode 中包含 VLFeat 有一个严重过时的指南: http://www.vlfeat.org/xcode.html

但是当我按照这些步骤操作时,出现以下错误:

Undefined symbols for architecture arm64:
"_vl_get_printf_func", referenced from:
-[OpenCVWrapper createMatrixFromImage:] in OpenCVWrapper.o
ld: symbol(s) not found for architecture arm64

我怀疑这是因为该库实际上是为 OSX 构建的(因此是为不同的体系结构构建的)。我一直无法弄清楚如何为 iOS(arm 架构)构建它并让它在物理 iPhone 上运行。

当我打开 VLFeat 下载中包含的 XCode 项目并为其中一个目标build设置并将 Base SDK 更改为 iOS 和 Supported platforms到 iOS 和 Valid Architectures 到 arm64 然后尝试构建,VLFeat 源代码出现了一堆错误,例如:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.0.0/include/mmintrin.h:64:12: Invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size

"Compiling with SSE2 enabled, but no __SSE2__ defined"

这些错误让我怀疑实际上不可能为 arm 构建这个库,而且除了移植库(修改代码)之外,这是一项不可能完成的任务。我不确定我得出的结论是否正确,因此对此的任何意见都会有所帮助。

最佳答案

VLFeat library目前(2023 年 1 月)不支持 ARM 架构,并且似乎不再维护,因为最后一次提交是在 2018 年 1 月。

然而,this commit到库的副本更新 host.h 和 host.c 文件以添加对 Clang 编译器和 ARM 架构的基本支持。这使我能够为运行 MacOS 的 Apple M1 Pro 处理器编译二进制文件,并且它们按预期运行。

性能将不如 Intel CPU,因为尚不支持 ARM 的 SIMD Neon 指令集,而 SSE2(在 Intel 上)支持。

关于ios - 如何在 iOS 项目中包含 C 库 (VLFeat 0.9.21)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48968541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com