Qt .nib在MacOS上发布问题

时间:2012-02-24 07:11:28

标签: c++ macos qt nib

我正在尝试在另一台没有安装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

没有任何区别。

3 个答案:

答案 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)无法正确复制,但有一个单行源修复此问题