我正在尝试在另一台没有安装Qt的mac上部署Qt C ++应用程序。我收到“Qt内部错误:无法加载qt_menu.nib。.nib文件应放在QtGui.framework / Versions / Current / Resources /或应用程序包的resources目录中。”
我已经尝试将qt_menu.lib打包到两个建议的位置,但没有成功:
$ ls ./arya.app/Resources/
qt_menu.nib
$ ./arya.app/Contents/MacOS/arya
Qt internal error: qt_menu.nib could not be loaded. The .nib file should be placed in QtGui.framework/Versions/Current/Resources/ or in the resources directory of your application bundle.
或:
$ mkdir QtGui.framework
$ mkdir QtGui.framework/Versions/
$ mkdir QtGui.framework/Versions/Current/
$ mkdir QtGui.framework/Versions/Current/Resources
$ mv ./arya.app/Resources/qt_menu.nib QtGui.framework/Versions/Current/Resources/
$ ./arya.app/Contents/MacOS/arya
Qt internal error: qt_menu.nib could not be loaded. The .nib file should be placed in QtGui.framework/Versions/Current/Resources/ or in the resources directory of your application bundle.
我不确定是否存在某些连接,但在此之前我遇到了dylib路径的一些问题。在使用install_name_tool磕磕绊绊之后,我用“
”解决了这些问题export DYLD_LIBRARY_PATH=.
在运行应用程序之前。
使用
构建应用程序CONFIG -= app_bundle
没有任何区别。
答案 0 :(得分:2)
在从另一个应用程序中解决同样的问题之后,我设法确定了可以轻松解决此.nib问题的确切命令:
mkdir -p application.app/Contents/Frameworks/QtGui.framework/Resources
cp -r $(QTLIBDIR)/QtGui.framework/Versions/4/Resources/qt_menu.nib application.app/Contents/Frameworks/QtGui.framework/Resources
这并没有解决有关部署mac的其他问题 - 只是.nib问题。
答案 1 :(得分:1)
试试这个:
(1)删除export DYLD_LIBRARY_PATH=.
(2)删除CONFIG -= app_bundle
(3)将QT框架放入./arya.app/Contents/Frameworks
即。 QtGui.framework 的所有内容到 ./ arya.app/Contents/Frameworks/QtGui.framework , QtCore.framework 进入 ./ arya.app/Contents/Frameworks/QtCore.framework 等。
所以你的qt_menu.nib会自动成为./arya.app/Contents/Frameworks/QtGui.framework/Versions/Current/Resources/qt_menu.nib
答案 2 :(得分:1)
在构建之后尝试在.app
上运行macdeployqt
。它将所需的Qt框架(以及任何其他需要的dylibs
)复制到bundle中并修复二进制文件的链接路径,以便它知道在Qt中链接它自己的bundle。
(它还有一个错误导致任何路径未在lib/
中结束的库(如/opt/local/lib/opencv/cv.lib
)无法正确复制,但有一个单行源修复此问题