在未安装qt的pc上测试简单的qt控制台程序

在未安装qt的pc上测试简单的qt控制台程序,qt,console,Qt,Console,代码非常简单: #include <QApplication> #include <QDebug> int main(int argc,char* argv[]) { QApplication a(argc,argv); qDebug()<<"Hello world!"; return a.exec(); } 我使用dumpbin实用程序查找控制台程序所依赖的.dll: C:\Program Files\Microsoft Visu

代码非常简单:

#include <QApplication>
#include <QDebug>

int main(int argc,char* argv[])
{
    QApplication a(argc,argv);
    qDebug()<<"Hello world!";
    return a.exec();
}
我使用dumpbin实用程序查找控制台程序所依赖的.dll: C:\Program Files\Microsoft Visual Studio 9.0\VC>dumpbin-依赖项G:\Public\H ello world\trytoshow.exe Microsoft R COFF/PE转储程序版本9.00.30729.01 微软公司版权所有。版权所有

转储文件G:\Public\Hello world\trytoshow.exe

文件类型:可执行映像

映像具有以下依赖项:

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_nonrest的文件夹,它来自 C:\Program Files\Microsoft Visual Studio 9.0\VC\redist,将其放入目录中。然后我将它发布到一台未安装qt的pc上。 它不运行


我做错什么了吗?谢谢。

正如winterTTr在你文章的评论中指出的那样,了解它不运行的真正含义非常重要


Qt Dll可能会使用更多的依赖项,因此我建议在启动程序时查看Dependency Walker的输出,以找出可能缺少的内容。您可以使用程序的评测功能来完成这项工作。您可以在此处找到它:

如果要使用程序的调试版本,还应该使用相关DLL的调试版本。如果我没记错的话,Qt-dll有调试版本,比如QtCored4.dll、QtGui4d.dll等等

另一方面,, 如果发现此应用程序由于应用程序配置不正确而无法启动,通常这是因为目标计算机上的调试版本运行库可能与编译它的位置不同。所以,您可以为应用程序使用静态运行时库链接,这应该可以解决这个问题


对于vs2010,在配置属性下,C/C++,代码生成,运行时库->多线程/MTd,这是cl.exe的/MTd编译参数。您还可以尝试在qt应用程序中设置它。

不运行意味着什么?有错误吗?警告?不运行意味着Windows系统认为程序所依赖的一些.dll文件不存在。但我使用了dumpbin实用程序来找出哪些文件。同时,我在发布模式下发布了程序,其中包含发布版本需要的文件。它在非QT安装的PC上工作。我找不到原因,为什么调试版本不运行,以及发布版本。你说Windows系统考虑了一些。程序依赖的DLL文件不存在,我记得,错误消息应该告诉你哪个DLL丢失了,对吗?不,它没有告诉我。它说:由于应用程序配置不正确,该应用程序无法启动。重新安装应用程序可能会解决此问题。是的,我只使用了qt的调试版本,如qtcored4.dll和qtguid4.dll。该实用程序显示,我需要从qt获得的只是qtcored4.dll和qtguid4.dll。我已经下载了dependencywalker。这个实用程序显示了相同的结果。
    1000 .data
    1000 .idata
    2000 .rdata
    1000 .rsrc
    4000 .text