有什么方法可以从直接的 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/