xcode - 为部署目标 OSX 10.10 编译 Metal 框架
问题描述
我有一个受 OSX 10.10 支持的项目。最近我不得不使用 Metal 框架进行图像处理。金属框架仅在 10.11 中引入。所以我的项目不会编译,因为部署目标是 10.10。我该如何克服这个?我不能在不更改部署目标的情况下添加#ifdef 或其他东西来编译项目并仅在最新的操作系统版本上使用 Metal 功能吗?
解决方案
您可以使用此方法加载与动态加载的捆绑包相关的代码,例如插件或框架。
static NSBundle* _MetalBundle = nil;
static id<MTLDevice> _MetalDevice = nil;
static bool IsMetalSupported(int /*api*/)
{
_MetalBundle = [NSBundle bundleWithPath: @"/System/Library/Frameworks/Metal.framework"];
if (_MetalBundle)
{
[_MetalBundle load];
_MetalDevice = ((MTLCreateSystemDefaultDeviceFunc)::dlsym(dlopen(0, RTLD_LOCAL | RTLD_LAZY), "MTLCreateSystemDefaultDevice"))();
if (_MetalDevice)
return true;
}
[_MetalBundle unload];
return false;
}
推荐阅读
- python - Python Mock_requests:我可以在 Mocker 的 url 参数中使用通配符吗?与pytest一起使用时如何实现url的模式匹配?
- coordinates - 如何测量从矢量坐标到光栅像素的距离?
- xslt - 如何将脚本生成的文本复制到输出文件的另一部分?
- spfx - SPFx 1.12.1 项目中 @fluentui/react-file-type-icons 的 tsc 错误
- r - ROI求解器多参数目标函数
- html - 如何在 CSS 中的网格中设置图片中的这种配置?
- django - Django - 我的 asgi websocket 路径如何在我的大摇大摆中
- javascript - 如何将 JS 中的波浪线动画转换为 React?
- c# - 如何测试具有许多可能结果的系统测试?
- python - 有人可以向我解释这个 Python 代码吗?