Проблемы с Qt .nib на MacOS - PullRequest
       4

Проблемы с Qt .nib на MacOS

4 голосов
/ 24 февраля 2012

Я пытаюсь развернуть приложение Qt C ++ на другом компьютере Mac, на котором не установлен Qt.Я получаю сообщение «Внутренняя ошибка Qt: файл qt_menu.nib не может быть загружен. Файл .nib должен быть помещен в QtGui.framework / Versions / Current / 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 ]

2 голосов
/ 26 июля 2012

После преодоления этой же проблемы из другого приложения мне удалось определить точные команды, которые легко решают эту проблему .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 голос
/ 28 февраля 2012

Попробуйте запустить macdeployqt на вашем .app после его сборки.Он копирует необходимые каркасы Qt (и любые другие необходимые dylibs) в пакет и исправляет пути ссылок двоичного файла, чтобы он знал, что нужно связать в Qt из своего собственного пакета.

(также имеется ошибка, из-за которой любые библиотеки с путями, не заканчивающимися на lib/ (например, /opt/local/lib/opencv/cv.lib, не копируются правильно, но для этого есть исправление из одной строки)

1 голос
/ 24 февраля 2012

Попробуйте это:

(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

...