Armadillo 在 iOS 上调用内部 Accelerate 库

Armadillo Calls Internal Accelerate Libraries on iOS

我最近尝试在 iOS 上使用 Armadillo 进行一些矩阵计算。该应用程序适用于我的开发 iPhone,但 Apple 在尝试将其发布到 Appstore 时给了我错误消息。 Armadillo 似乎调用了一些内部的 BLAS 函数。我用这条消息在网上搜索,但没有找到任何有用的信息。我还发现使用 "cblas_" 前缀调用 BLAS 函数,例如cblas_dgemv,直接从我的代码不会导致错误。然而,这让犰狳的使用变得毫无意义。

不知道有没有人遇到过同样的问题,解决方法是什么。我怀疑它与 config.hpp 中的某个宏有关。非常感谢您的热心帮助。

错误信息:

非public API 用法:

• 该应用引用了 *** 中的非 public 符号:_sgemm_、_sgemv_、_ssyrk_

Accelerate BLAS 实现支持一堆冗余符号,以促进各种 Fortran 编译器的不同函数命名方案。严格来说,这些是为了(由您的 fortran 编译器)使用,因此您可能有一些争论认为它们不是私有接口。如果 AppStore 仍然给您带来麻烦,请向 Apple 提交错误并要求他们修复界面上的簿记,以便可以使用它们。

虽然开始使用 headers 中的 cblas_ 接口会更简单。