gpt4 book ai didi

macos - Qt 5.1 和 Mac : Bug making macdeployqt not working properly

转载 作者:行者123 更新时间:2023-12-03 20:20:53 27 4
gpt4 key购买 nike

从版本 5.1rc2 开始我有一个问题的 Qt适用于 Mac OS X。(5.1 也受到影响,而不是 5.1rc1)
当我构建我的应用程序并执行 otool -L在二进制文件上查看共享库的路径,我得到:(这只是一个示例,为了清楚起见,我删除了其中一些)

/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit 
(compatibility version 45.0.0, current version 1187.37.0)
/Users/chris/**Qt5.1.0//5.1.0**/clang_64/lib/QtWebKitWidgets.framework/Versions/5/QtWebKitWidgets
(compatibility version 5.1.0, current version 5.1.0)
/Users/chris/Qt5.1.0//5.1.0/clang_64/lib/QtQuick.framework/Versions/5/QtQuick
(compatibility version 5.1.0, current version 5.1.0)
/Users/chris/Qt5.1.0//5.1.0/clang_64/lib/QtQml.framework/Versions/5/QtQml
(compatibility version 5.1.0, current version 5.1.0)
/Users/chris/Qt5.1.0//5.1.0/clang_64/lib/QtNetwork.framework/Versions/5/QtNetwork
(compatibility version 5.1.0, current version 5.1.0)
/Users/chris/Qt5.1.0//5.1.0/clang_64/lib/QtCore.framework/Versions/5/QtCore
(compatibility version 5.1.0, current version 5.1.0)
/Users/chris/Qt5.1.0//5.1.0/clang_64/lib/QtGui.framework/Versions/5/QtGui
(compatibility version 5.1.0, current version 5.1.0)

如您所见,Qt 库的路径中有一个双斜杠。
当我使用 macdeployqt 部署我的应用程序时,这些路径不会更改为本地框架 (@executable_path/../Frameworks/...),因此...
我必须使用 install_name_tool 手动完成,这真的很烦人。

我能做些什么来解决这个问题? (我已经尝试重新安装 Qt,清理,再次运行 qmake 并在没有更改的情况下重建)

最佳答案

有同样的问题。我应用了下一个解决方法:

构建程序后,我已将 exe 中的链接更改为正确的链接

install_name_tool -change /Users/username/Qt5.1.0//5.1.0/clang_64/lib/QtQuick.framework/Versions/5/QtQuick  /Users/username/Qt5.1.0/5.1.0/clang_64/lib/QtQuick.framework/Versions/5/QtQuick <YourExecutable>

在此解决方法之后,macdeployqt 已将 exe 中的所有链接更改为相对链接。

但是我的应用程序坏了。问题是我已将所有图像和 QML 文件添加到资源中。运行 macdeployqt 后 - 我无法运行我的应用程序。当我用 gdb 运行它时 - 我看到下一个错误:
QQmlApplicationEngine failed to load component 
qrc:/qml/main.qml:-1 File not found

Error: Your root item has to be a Window.

所以不知何故,我所有的资源都变得不可用了。有谁知道如何解决这个问题?

我也开始讨论 qt forum

更新,如何部署:
  • 使用this script摆脱动态链接路径中的双斜杠。

    ./fixqt.sh ~/Qt5.1.0/5.1.0/clang_64
  • 从此 repository 构建 macdeployqt 工具.
  • 运行 macdeployqt 并使用您的 qml 源指定 dir:

    macdeployqt MyApp.app/-qmldir=../src/qml -dmg

  • 在这些步骤之后,我设法在没有安装 QT 的情况下在不同的 OS X 系统上运行我的应用程序。我已将所有 qml 文件和图像添加到资源中。在 MyApp.app/Content/MacOS/中复制的 QtQuick 和 QtQuick.2 模块

    希望能帮助到你

    关于macos - Qt 5.1 和 Mac : Bug making macdeployqt not working properly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17475788/

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