gpt4 book ai didi

ios - 当我提交带有 Armadillo 的 iOS 应用程序时,BLAS 符号被拒绝为私有(private) (ITMS-90338 : Non-public API usage)

转载 作者:行者123 更新时间:2023-12-01 16:11:18 25 4
gpt4 key购买 nike

我有一个应用程序,它使用 Armadillo 库进行一些矩阵计算。它针对 Accelerate.framework 编译良好,但在应用商店被拒绝:
ITMS-90338:非公共(public) API 使用 - 应用程序引用非公共(public)符号...ddot、dgemm、dgemv、dsyrk。
这些符号来自 BLAS 库并包含在 Accelerate 中,但显然不公开。有没有办法使用 Armadillo 而不会出现此错误?

最佳答案

对于 iOS,当你提交应用商店时出现的一个问题是你会被拒绝,除非你告诉 Armadillo 库不要使用 BLAS。
对于这些符号中的任何一个,您也可能会得到相同的结果:

_sasum_ _dasum_ _snrm2_ _dnrm2_ _sdot_ _ddot_ 
_sgemv_ _dgemv_ _cgemv_ _zgemv_ _sgemm_ _dgemm_
_cgemm_ _zgemm_ _ssyrk_ _dsyrk_ _cherk_ _zherk_
这些都被 BLAS 用于进行更快的矩阵计算,但实际上对于基本功能来说并不是必需的。要关闭 BLAS,请转到 armadillo_bits/config.hpp 链接到 Armadillo 的任何地方并注释掉第 26 行:
#if !defined(ARMA_USE_BLAS)
//#define ARMA_USE_BLAS
//// Comment out the above line if you don't have BLAS or a high-speed replacement for BLAS,
//// such as OpenBLAS, GotoBLAS, Intel MKL, AMD ACML, or the Accelerate framework.
//// BLAS is used for matrix multiplication.
//// Without BLAS, matrix multiplication will still work, but might be slower.
#endif
这意味着您现在可以在没有 BLAS 的情况下使用 Armadillo ,并且应用商店不会拒绝二进制文件。如果您想使用 BLAS,您可以查看 wrapper_blas.h 和 def_blas.h 并使用提供的公共(public) API(例如 https://developer.apple.com/documentation/accelerate/1513282-cblas_dgemm?language=objc )进行一些替换 - 但这对我的项目来说不是必需的,我也没有有时间检查它是否能正常工作(我不得不承认我有更多有趣的空闲时间项目......)

关于ios - 当我提交带有 Armadillo 的 iOS 应用程序时,BLAS 符号被拒绝为私有(private) (ITMS-90338 : Non-public API usage),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63814697/

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