You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MacOS下Xcode配置MoltenVK开发Vulkan时启动报错:无法加载libvulkan.1.dylib

解决Mac OS X上Vulkan运行时dyld找不到libvulkan.1.dylib的问题

我之前在Mac上用MoltenVK搭建Vulkan开发环境时,也碰到过一模一样的问题——编译顺利通过,但一启动就弹出dyld: Library not loaded的错误,本质原因是Xcode只在编译阶段完成了库链接,但没把库复制到运行时系统能找到的位置,或者运行路径(rpath)配置不正确。下面是我亲测有效的解决步骤:

1. 添加Copy Files Phase,把库复制到App包内

只在Build Phases -> Link Binary With Libraries中添加库是不够的,编译时链接成功了,但运行时系统找不到实际的库文件。我们需要让Xcode把库复制到App包的Frameworks目录:

  • 打开你的Xcode项目,选中目标(Target),切换到Build Phases标签页
  • 点击左上角的+按钮,选择New Copy Files Phase
  • 在新生成的Copy Files Phase里,将Destination设置为Frameworks
  • 把项目里的libvulkan.1.dyliblibvulkan.1.1.121.dylib拖到这个Phase的文件列表中

2. 配置Runpath Search Paths

告诉系统去哪里寻找这些动态库:

  • 切换到Build Settings标签页,搜索Runpath Search Paths
  • 添加@executable_path/../Frameworks这个路径(因为我们把库放在了App包的Frameworks目录下,这个路径是可执行文件相对于Frameworks的位置)
  • 确保这个路径在Debug和Release模式下都生效

3. 检查并修改库的Install Name

有时候下载的Vulkan SDK里的dylib可能带有绝对路径的install name,导致运行时找不到。可以用终端命令检查:

otool -L libvulkan.1.dylib

如果输出里的libvulkan.1.dylib路径是绝对路径(比如/Volumes/.../libvulkan.1.dylib),就需要修改成rpath形式:

install_name_tool -id @rpath/libvulkan.1.dylib libvulkan.1.dylib

同样检查libvulkan.1.1.121.dylib,确保它依赖的libvulkan.1.dylib也是@rpath开头的路径。

4. (可选)改用MoltenVK Framework更省心

其实MoltenVK官方提供的MoltenVK.framework比单独的dylib更好用,直接把这个框架拖进Xcode项目,Xcode会自动处理链接和复制的问题,不用手动折腾dylib的路径。如果你还没试过,可以考虑换成这种方式。

做完这些步骤后,先Clean项目(Product -> Clean Build Folder),再重新构建运行,应该就能解决这个报错了。

内容的提问来源于stack exchange,提问作者Michael IV

火山引擎 最新活动