2013-10-15 3 views
0

У меня есть проект на C++ с использованием Qt, и я работаю как ожидалось. Однако проблема заключается в том, когда я копирую исполняемый файл для стандартной установки ОС (например, Windows или Linux) после выполнения. Я получаю ошибки QtWidgets или некоторые другие ошибки Qt.Компиляция Qt-проекта и включение Qt-библиотек

Я пробовал ссылаться на Qt-документацию, но я не могу найти решение или пример того, что мне нужно. Это имеет какое-то отношение к Static и Dynamic Building ... но не может найти хороший пример или учебник.

Я посмотрел учебник http://www.qtcentre.org/wiki/index.php?title=Deploying_Qt_Applications, но это не совсем эффективное решение.

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

+1

просто скопировать необходимые библиотеки DLL из QT-бен каталога в том же каталоге, что и исполняемый файл. Если скомпилированные с использованием mingw также предоставляют требуемые DLL-файлы, см. Http://stackoverflow.com/questions/17377706/cannot-run-my-exe-file-on-another-computer-application-requested-the-runtime-t/ 19136598 # 19136598 –

+0

Я не тестировал в Windows, но в Linux копировал libQtCore.so (и другие библиотеки) в тот же каталог, что и исполняемый файл по-прежнему вызывает ошибку. В любом случае в приложении я могу указать папку, в которой приложение должно искать эти библиотеки? Не уверен, почему эти функции не просто легки, как указание относительной папки! – roosevelt

+1

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

ответ

1

Что вы можете сделать, это создать скрипт, который копирует ваши DLL (или .so * файлы) в исполняемую папку. После того, как вы сделаете это добавить дополнительную цель Makefile в файле проекта:

theproject.pro:

OTHER_FILES += copy.script # Assuming your copy script is called "copy.script" 
deploylibs.target = deploylibs 
deploylibs.command = ./copy.script # Launching the script 

QMAKE_EXTRA_TARGETS += deploylibs 

Теперь вы можете разместить ваши библиотеки с помощью команды (n) make deploylibs.

NB: есть очень полезный инструмент под названием «Dependency Walker», чтобы найти нужные DLL файлы. Это только для Windows. Что касается Linux и его *.so* файлы, которые вы можете использовать ldd команду:

>$: ldd theexecutable 
    alib.so => /path/to/library/on/your/computer.so 
... 
Смежные вопросы