gpt4 book ai didi

c++ - 如何让 macdeployqt 在复制 QtWebEngineCore 框架时更改 QtWebEngineProcess.app 中的库名称

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:08:07 32 4
gpt4 key购买 nike

编辑:使用 Qt 5.9.1,安装 Homebrew

在此 other question 中发表评论后,我们正在尝试使用 macdeployqt 来准备基于 Qt 的应用程序的 OSX 包的分发。

此工具正确地复制了包内的所有 Qt 依赖项(甚至一些非 Qt 库)。它还会更改应用程序本身和复制的库中的依赖库名称。

它还成功复制了 QtWebEngineProcess.app QtWebEngineCore.frameworkHelpers 文件夹。

问题

一个问题是它没有更改 inside QtWebEngineProcess 中的依赖库名称,因此该包不可重定位(因为 QtWebEngineProcess 指的是它的依赖库通过仅在开发机器上有效的绝对路径)。尝试在“客户端”机器上运行该应用程序,因此会出现错误:

dyld: Library not loaded: /usr/local/Cellar/qt/5.9.1/lib/QtWebEngineCore.framework/Versions/5/QtWebEngineCore Referenced from: Business.app/Contents/Frameworks/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app/Contents/MacOS/QtWebEngineProcess

我们尝试通过编辑 QtWebEngineProcess 将 Qt 库路径的绝对部分替换为 @loader_path/../../../../../.. 来手动修复此应用程序。/../../Frameworks/.

这只会将问题向前推进:现在 QtWebEngineProcess 似乎正确地加载了它的依赖库,但是依赖库本身不能再加载它们的依赖库,因为它们的安装名称以 @ 开头executable_pathQtWebEngineProcess 可执行文件与 Business 可执行文件位于不同的文件夹中。因此错误:

dyld: Library not loaded: @executable_path/../Frameworks/QtQuick.framework/Versions/5/QtQuick
Referenced from: Business.app/Contents/Frameworks/QtWebEngineCore.framework/Versions/5/QtWebEngineCore


ma​​cdeployqt 在涉及使用 Qt 网络引擎的应用程序时是否损坏?

有没有办法让它工作而无需手动重新更改 bundle 中的所有 Qt 安装名称?

最佳答案

根据 Dmitry 对原始问题的评论之一,我终于花时间用 OS X 的 Qt 5.9.1 官方发行版进行了测试,事实证明他是对的。 macdeployqt 与 Qt 的官方二进制文件一起分发可以很好地处理 QtWebEngineProcess.app。

此实用程序随 Qt 的 homebrew 安装一起分发的版本是伪造的,至少在 5.9.1 中是这样

关于c++ - 如何让 macdeployqt 在复制 QtWebEngineCore 框架时更改 QtWebEngineProcess.app 中的库名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46430930/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com