请教几个 qt6, macos 打包遇到依赖问题。

17 天前
 tiandishi

请教几个 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

求有经验的人指点迷津,如果您不知道我在说啥,可能您难以解决我的问题,就随便看看。

如有任何思路,不胜感激,困扰好几天了。

639 次点击
所在节点    Qt
5 条回复
icedx
17 天前
大概率是 libqcocoa.dylib 没有在 find path
tiandishi
17 天前
@icedx 看了下并没有依赖这个 lib,加入了之后也没什么进展。
有个问题请教下,不清楚为啥编译运行 ok ,打包却依赖需要下载的新 lib ,理论上编译能运行的话本地不就应该就包含了所有依赖吗,只要解决依赖问题就应该 ok 了啊?
sillydaddy
17 天前
“ 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/
```
icedx
17 天前
@tiandishi
qcocoa 是 Qt 与系统沟通的桥梁
就是报错说的 platform plugin

构建运行的时候, 调试器会设定一系列环境变量指引程序寻找要用到的库
而直接运行的情况下没有调试器设定环境变量了
这个时候需要要用到的动态库在 find path 下










但话又说回来了, 为啥不搞静态构建
lixile
17 天前
虽然没怎么看懂 但是按经验是 plugin load 失败
系统的环境变量中设置 QT_DEBUG_PLUGINS = 1 看看详细的 plugins 打印日志?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/1126860

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX