Russian Qt Forum

Qt => Вопросы новичков => Тема начата: cptJack от Сентябрь 13, 2011, 10:22



Название: Сборка Qt программы
Отправлено: cptJack от Сентябрь 13, 2011, 10:22
Всем привет!

Создал программу Qt по книжке на одном компе, скопировал папки Name и Name-build-desktop на др. комп, на котором программа и не запускается...Требует некоторые .dll. В нете нашел много тем на эту тему, там предлагается динамически, или статически собирать проект. Как я понял, динамическая сборка нужна для последующей доработки проекта на др. машине, статическая - это уже готовый релиз.

Если я не прав, поправьте меня, пожалуйста, ибо я в Qt всего пару дней, а научиться очень хочется.

Собственно вопрос - как собирать проект Qt динамически? :)


Название: Re: Сборка Qt программы
Отправлено: Пантер от Сентябрь 13, 2011, 10:25
Ищи по форуму. Это одна из наиболее поднимающихся тем.


Название: Re: Сборка Qt программы
Отправлено: Даниил от Сентябрь 13, 2011, 10:27
Динамическая сборка - сборка проекта, при котором с программой тебе необходимо поставлять необходимые *.dll файлы. При статической сборке, ты имеешь на выходе, лишь один *.exe файл.

Есть два вида сборки программы: Debug и Release.
Тип сборки указывается в QtCreator - Внизу слева есть иконка компьютера, на неё нажимаешь и меняешь состояние.
Или же можно указать в в .pro файле:
Код:
CONFIG += release
При сборке Debug, тебе будет такскать с программой dll-ки с суфиксом "d", они имеют больший вес: QtCored4.dll.
Про статическую сбоку, есть много тем, как на данном форуме, так и в интернете.


Название: Re: Сборка Qt программы
Отправлено: cptJack от Сентябрь 13, 2011, 10:32
Ок, большое спасибо :)


Название: Re: Сборка Qt программы
Отправлено: cptJack от Сентябрь 13, 2011, 12:28
Появился у меня еще вопрос. Скопировал папки проекта по такому же пути, что и на первом компьютере. На втором ПК в PATH добавил путь к .bin, запускаю проект на втором ПК, собираю, все нормально...Даже без копирования библиотек с суффиксом d    .dll. Вопрос - почему так? ???


Название: Re: Сборка Qt программы
Отправлено: cptJack от Сентябрь 13, 2011, 12:33
А, кажется догнал - сборки статическую или динамическую нужно делать, чтобы на машине, без установленной библиотеки Qt и прочего, спокойно запускалось написанное на Qt приложение? :)


Название: Re: Сборка Qt программы
Отправлено: kambala от Сентябрь 13, 2011, 13:33
статическую


Название: Re: Сборка Qt программы
Отправлено: lit-uriy от Сентябрь 13, 2011, 17:05
cptJack, можно и не делать статическую, читай тут (http://wiki.crossplatform.ru/index.php/Развертывание_приложений_Qt_в_MS_Windows)


Название: Re: Сборка Qt программы
Отправлено: cptJack от Сентябрь 13, 2011, 17:09
Всем большое спасибо! :)


Название: Re: Сборка Qt программы
Отправлено: PavelVX от Сентябрь 16, 2011, 17:36
Тогда подскажите, плиз, почему может быть такой баг:
делаю все как тут описанно http://wiki.crossplatform.ru/index.php/Развертывание_приложений_Qt_в_MS_Windows (http://wiki.crossplatform.ru/index.php/Развертывание_приложений_Qt_в_MS_Windows)
Qt установлена в C:\Qt\2010.05\qt. В программе использую SQLite, phonon
Соответственно из C:\Qt\2010.05\qt\bin сливаю все нужные dll, из C:\Qt\2010.05\qt\plugins\sqldrivers
к моему приложению создаем папку sqldrivers и кладем туда qsqlite4.dll.
При попытке запустить получаем следующие ситуации:
1. win2000srv: приложение говорит, нет дров для sqlite!. Хотя вывод на экран QSqlDatabase::drivers() говорит, что sqlite она подхватила. :(
2. winXP sp3, win7: приложение запускается. Но не цепляется графика! phonon стартует, но изображение не дает. Картинки, прицепленные на QLabel/QPushbutton из файловой системы не показываются.
И вот что теперь делать, кому верить нопонятно. Кто что посоветует, куда копать?
По поводу п1. У нас тестовое рабочее приложение на Qt, к базе цепляется через odbc. Дак оно работает, и не возникает.
По п2. сборка и запуск приложения осуществляется и под XP (рисунки есть, видео нет) и под вин7 (все есть), а вот на левых машинах, косяки :(
Качается свежий сдк под вин, может это поможет.


Название: Re: Сборка Qt программы
Отправлено: PavelVX от Сентябрь 17, 2011, 10:56
Обновил SDK. не помогло. Отключил phonon, пересобрал проект. Картинки так и не укладываются на QLabel Ж(


Название: Re: Сборка Qt программы
Отправлено: Даниил от Сентябрь 17, 2011, 13:33
Выложи код. Поглядим.


Название: Re: Сборка Qt программы
Отправлено: PavelVX от Сентябрь 17, 2011, 15:53
Я или где-то неправльно делаю, или что тут особо укладывать:
mainwindow.h
Код:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtGui>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:

};

#endif // MAINWINDOW_H
mainwindow.cpp
Код:
#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{


    QLabel * imageFooter = new QLabel(this);
    QImage image("d:/varejki.jpg");
    imageFooter->setPixmap(QPixmap::fromImage(image));
    imageFooter->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
    imageFooter->setScaledContents(true);


}

MainWindow::~MainWindow()
{

}
Все, собираем проект в релиз варианте. Кладем рядом libgcc_s_dw2-1.dll, mingwm10.dll, QtCore4.dll, QtGui4.dll. В корневую D кидаем картинку. Запускаем на другом, чистом компе и все, получаем чистую форму, без картинки.


Название: Re: Сборка Qt программы
Отправлено: BRE от Сентябрь 17, 2011, 18:45
Поищи по форуму (ну или в документации) вот такое слово: imageformats


Название: Re: Сборка Qt программы
Отправлено: PavelVX от Сентябрь 17, 2011, 20:22
BRE, СПАСИБО!!! Один из самых ценных советов за сегодня!!!
Все заработало, даже больше, чем я расчитывал!