You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS双击Delphi生成的FireMonkey程序提示.dylib未找到求助

解决FireMonkey macOS程序双击图标找不到第三方dylib的问题

问题背景

使用Delphi 12 FireMonkey开发的macOS 64位程序,通过以下方式调用第三方dylib:

{$IFDEF OSX64}cdecl; external 'R_mylib.a.dylib' name 'LibCall';
{$ENDIF}
  • 通过PAServer运行程序正常;
  • 双击程序图标启动时,提示找不到R_libClientAPI64Mac.a.dylib;
  • 右键显示包内容,进入MacOS文件夹双击EXE可正常启动;
  • 已将dylib复制到/usr/local/lib和用户HOME目录,otool -L输出显示程序依赖R_libClientAPI64Mac.a.dylib。

原因分析

双击程序图标时,程序的工作目录是App包的根目录(如/Applications/YourApp.app),而macOS默认的动态库搜索路径在这个上下文下不包含/usr/local/lib或HOME目录;直接双击MacOS文件夹内的EXE时,工作目录是MacOS文件夹,PAServer运行时也会设置包含dylib的路径,因此能找到依赖。

解决方案(推荐:包内嵌入dylib,符合macOS打包规范)

  1. 将dylib放入App包内的Frameworks目录

    • 右键程序图标,选择「显示包内容」;
    • 进入Contents目录,若没有Frameworks文件夹则新建;
    • 将R_libClientAPI64Mac.a.dylib复制到Frameworks文件夹中。
  2. 修改程序的依赖路径
    使用macOS的install_name_tool命令,将程序对dylib的引用改为指向包内的路径:

    install_name_tool -change R_libClientAPI64Mac.a.dylib @executable_path/../Frameworks/R_libClientAPI64Mac.a.dylib /Applications/YourApp.app/Contents/MacOS/YourExeName
    

    替换/Applications/YourApp.app/Contents/MacOS/YourExeName为你的程序实际路径。

  3. 验证修改结果
    运行以下命令检查依赖路径是否更新:

    otool -L /Applications/YourApp.app/Contents/MacOS/YourExeName
    

    确认R_libClientAPI64Mac.a.dylib的路径已变为@executable_path/../Frameworks/R_libClientAPI64Mac.a.dylib。

替代方案(不推荐:全局配置路径)

若仅用于个人开发测试,可通过修改环境变量让双击启动时包含dylib路径,但此方法不适合分发程序:

  • 编辑~/.zshrc(或~/.bash_profile,根据Shell类型),添加:
    export DYLD_LIBRARY_PATH=/usr/local/lib:$DYLD_LIBRARY_PATH
    
  • 重启终端或执行source ~/.zshrc生效,之后双击程序图标可能正常启动,但用户端无法自动配置此环境变量。

内容的提问来源于stack exchange,提问作者Marcelo Nogueira Murari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 22:07:43