Тестирование простой консольной программы qt на компьютере без установленного qt - PullRequest
1 голос
/ 28 августа 2011

Код очень прост:

#include <QApplication>
#include <QDebug>

int main(int argc,char* argv[])
{
    QApplication a(argc,argv);
    qDebug()<<"Hello world!";
    return a.exec();
}

И содержимое .pro файла:

CONFIG+=qt debug console
SOURCES+=a.cpp
TARGET=trytoshow

Я использовал утилиту dumpbin, чтобы узнать, от чего зависит .dll консольная программа: C: \ Program Files \ Microsoft Visual Studio 9.0 \ VC> зависимость от мусорной корзины "G: \ Public \ H ello world \ trytoshow.exe " Microsoft (R) COFF / PE Dumper Версия 9.00.30729.01 Авторское право (C) Microsoft Corporation. Все права защищены.

Дамп файла G: \ Public \ Hello world \ trytoshow.exe

Тип файла: EXECUTABLE IMAGE

Изображение имеет следующие зависимости:

QtGuid4.dll
QtCored4.dll
MSVCR90D.dll
KERNEL32.dll

Краткое описание

    1000 .data
    1000 .idata
    2000 .rdata
    1000 .rsrc
    4000 .text

Поэтому я поместил trytoshow.exe, qtguid4.dll, qtcored4.dll и папку с именем «Debug_NonRedist», которая находится в C: \ Program Files \ Microsoft Visual Studio 9.0 \ VC \ redist, в каталог. Затем я выпустил его на неустановленный компьютер. Не запускается.

Я сделал что-то не так? Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 августа 2011

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

С другой стороны,
если вы найдете "Это приложение не удалось запуститьпоскольку конфигурация приложения неверна », обычно это происходит потому, что библиотека времени выполнения отладочной версии на целевом компьютере может не совпадать с той, где вы ее компилируете.Таким образом, вы можете использовать статическую ссылку библиотеки времени выполнения для вашего приложения, которая должна решить эту проблему.

Для vs2010, в разделе Свойства конфигурации, C / C ++, Генерация кода, Библиотека времени выполнения -> Многопоточность (/ MTd), котораяпараметр компиляции / MTd для cl.exeВы также можете попробовать найти его в приложении qt.

0 голосов
/ 28 августа 2011

Как winterTTr уже указал в комментарии к вашему сообщению, было бы важно знать, что на самом деле означает "Это не работает".

Может быть больше зависимостей, используемых (Qt) Dll, поэтому я бы посоветовал взглянуть на выход Dependency Walker при запуске программы, чтобы выяснить, что может отсутствовать (вы можете использовать «Профилирование» функциональность программы для этого). Вы можете найти его здесь: http://www.dependencywalker.com/

...