请教几个 qt6 ,macos 打包遇到依赖问题。
我做了个音乐播放器,引用的外部库只有 libmpv ,还引用了 qt 的 sql ,用于处理 sqlite 数据库。问题可能主要出现在这两个。 编译调试运行都没啥问题,开发完成想要打包发布,macdeployqt6 打包出来的却无法运行。 仔细分析认为有些依赖有问题,比如编译的时候 ok ,理论上所有依赖在本机都已经齐全,macdeployqt6 打包却告知会引用 Postgres.app 下面的一个库,而这个 app 我之前根本没有安装。类似的还有 libjxl_cms.0.11.dylib libjxl.0.11.dylib 等图片相关的库,需要额外下载才能打包,编译运行却不需要。
换思路采用 xcode 来打包,先 qmake make 生成 xcode 项目,导入后可以编译运行,archive 打包逐个测试依赖的库,发现不集成部分依赖的 Framework 可运行,全部集成却不行。
第二个问题是,解决完上述依赖文件后,打包的程序.app 还是无法直接双击打开,看汇报日志出现 signed 、ns 等模糊问题。更奇葩的是,有时候采用 lldb 对打包的程序进行调试可以运行,直接打开 app 却打不开。 Termination Reason: Namespace SIGNAL lldb 报错 :qianqianplayer[73941:807292] This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem
求有经验的人指点迷津,如果您不知道我在说啥,可能您难以解决我的问题,就随便看看。
如有任何思路,不胜感激,困扰好几天了。
![]() |
1
icedx 16 天前
大概率是 libqcocoa.dylib 没有在 find path
|
2
tiandishi OP @icedx 看了下并没有依赖这个 lib,加入了之后也没什么进展。
有个问题请教下,不清楚为啥编译运行 ok ,打包却依赖需要下载的新 lib ,理论上编译能运行的话本地不就应该就包含了所有依赖吗,只要解决依赖问题就应该 ok 了啊? |
![]() |
3
sillydaddy 16 天前
“ This application failed to start because no Qt platform plugin could be initialized”,这个错误发布 Qt 的会经常遇到,我就在 Windows 系统和 Linux 系统上遇到过,macOS 应该也类似。
如果你找到 Qt 的库目录(安装目录),那么,除了常见的 Qt5Core.lib ,Qt5Gui.lib 等库文件外,还会发现有一个 plugins/platform 文件夹,里面的就是 Qt 运行依赖的插件库,把这些插件也一同打包(也打包到相对目录 plugins/platform )。 具体路径我问了下 AI: ``` 查找 Qt 安装目录下的 plugins/platforms 文件夹。通常,它位于类似如下路径: Windows:Qt/5.x.x/msvc2019_64/plugins/platforms/ Linux:Qt/5.x.x/gcc_64/plugins/platforms/ macOS:Qt/5.x.x/clang_64/plugins/platforms/ ``` |
![]() |
4
icedx 16 天前
@tiandishi
qcocoa 是 Qt 与系统沟通的桥梁 就是报错说的 platform plugin 构建运行的时候, 调试器会设定一系列环境变量指引程序寻找要用到的库 而直接运行的情况下没有调试器设定环境变量了 这个时候需要要用到的动态库在 find path 下 但话又说回来了, 为啥不搞静态构建 |
![]() |
5
lixile 16 天前
虽然没怎么看懂 但是按经验是 plugin load 失败
系统的环境变量中设置 QT_DEBUG_PLUGINS = 1 看看详细的 plugins 打印日志? |