有什么方法可以从直接的 C 或 C++ 文件确定 Accelerate.framework 在运行时是否可用?

我发现的条件编码示例似乎都需要 Objective-C 自省(introspection)(例如 respondsToSelector )和/或 Objective-C api(例如 UIDevice 的 systemVersion 成员)

最佳答案

通常的技巧是你对框架进行弱链接,然后检查由该框架导出的函数指针的实际可用性。如果框架因为不可用而无法链接,则该函数将为 NULL

所以对于 Accelerate.framework 你会做这样的事情:

#include <Accelerate/Accelerate.h>

if (cblas_sdsdot) {
    NSLog(@"Yay we got Accelerate.framework");
} else {
    NSLog(@"Oh no, no Accelerate.framework");
}

这在 TN2064 - Ensuring Binary Backwards Compatibility 中有描述

关于c++ - iOS — 确定 Accelerate.framework 在运行时是否可用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3534934/

10-13 08:03