2013-08-11 2 views
2

Я делаю простое приложение Qt на Mac с Qt 5.1. Я развертываю его с помощью macdeployqt, но когда я запускаю его на другом Mac.Я не могу запустить приложение Qt на другом mac

Я бег otool -L с моим приложением, и это говорит

/Users/aratn0n/Qt//5.1.0/clang_64/lib/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.1.0, current version 5.1.0) 
    /Users/aratn0n/Qt//5.1.0/clang_64/lib/QtGui.framework/Versions/5/QtGui (compatibility version 5.1.0, current version 5.1.0) 
    /Users/aratn0n/Qt//5.1.0/clang_64/lib/QtCore.framework/Versions/5/QtCore (compatibility version 5.1.0, current version 5.1.0) 
    /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0) 
    /System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0) 
    /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 56.0.0) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0) 

Кажется, он использует библиотеку из моей машины, так что, когда я запускаю его на другой машине, он не может использовать библиотеку Qt в рамочных папку в комплекте приложения.

Как это исправить?

+0

Люди могут попросить вас спросить [здесь] (http://apple.stackexchange.com/). – eccstartup

ответ

1

я в настоящее время не имеет решения, но я столкнулся с той же проблемой, что вы имели при запуске macdeployqt. Основываясь на another post, причина, по которой macdeployqt не изменяет пути к локальным фреймворкам (@executable_path /../ Frameworks/...), вызвана двойной косой чертой в путях библиотек Qt. Вы должны вручную запустить install_name_tool исправить двойные слеши

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 <EXECUTABLE> 

К сожалению, я не могу помочь больше, но это, насколько я должен развернуть свое приложение на Mac OS X. К сожалению для меня, когда Я удаляю/переименовываю мою установленную библиотеку Qt, мое приложение больше не работает, потому что оно не может найти библиотеки, настроенные на macdeployqt.

1

Если вы намерены использовать qt в качестве динамической библиотеки, тогда вам придется распространять dylib ... гораздо проще использовать его в качестве статической библиотеки. также вы мало выигрываете от наличия общей библиотеки, если вы не используете ее, поэтому, если у вас есть только один процесс, создайте qt как статическую библиотеку и привяжите ее к вашему продукту, тогда не будет зависимости от времени выполнения на внешней lib.

1

Похоже, что macdeployqt не выполнил свою работу.

Он должен скопировать необходимые библиотеки Qt в пакет приложений и установить для вас пути.

Либо искать в то, почему это не удается, или скопировать файлы самостоятельно и обновлять пути с install_name_tool

+0

Наконец-то я обнаружил, что это ошибка Qt 5.1. Меняю 5.0. – Awirut

+0

Исправлено в 5.1.1 – koan

1

Это ошибка в установке Qt, которая останавливает macdeployqt, правильно работая в 5.1.0, как указано в ответе пользователя kimbag.

Исправлено в 5.1.1.

Если по какой-либо причине вы должны использовать 5.1.0, тогда запустите macdeployqt, и вы обнаружите, что каркасы Qt были скопированы в комплект.

Вам будет нужно cd в каталог Frameworks в расслоении и переписать путь связи с помощью команд вида

install_name_tool -change /Users/username/Source/Qt5//5.1.0/clang_64/lib/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui QtCore 

Вы должны сделать это для каждой структуры Qt переписать зависимости от друг друга, а также все dylib в каталоге PlugIns, а также исполняемый файл.

Смежные вопросы