Qt4程序崩溃,除非安装SDK

我已经写了一个开源的程序,我已经使用Qt4 LGPL SDK构build了GPL。 这个程序能够search一个可选的Sqlite3数据库的数据。

这是什么让我失去了我的想法。 我在开发机器上编译程序。 当我尝试运行它,我可以关于丢失DLL的错误。 我将这些dll复制到与可执行文件相同的目录中,现在可以正常工作(mingwm10.dll,libgcc_s_dw2-1.dll,QtCore4.dll,QtSql4.dll,QtGui4.dll),包括数据库search。

现在,如果我将该文件夹与可执行文件和DLL复制到一个没有安装SDK的新机器,它运行良好,直到我尝试search。 只要我点击searchbutton,我可以出现以下错误:

Title: Microsoft Visual C++ Runtime Library Runtime Error! This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. 

然后我下载并安装SDK,除此之外什么都不做,我现在可以运行程序并searchsqlite3文件了!

我错过了什么魔法?

PS两台机器都是新安装的Windows XP系统。

你可能有一些libs或Qt插件没有被部署到目标机器上。 这很可能是SQL驱动程序插件。 以下是关于它的一些信息: http : //doc.trolltech.com/latest/deployment-windows.html#qt-plugins

您需要将所需的Qt插件复制到可执行文件旁边的目录中。 在main()添加这样的内容:

  QApplication::addLibraryPath(QCoreApplication::applicationDirPath() + "/plugins"); 

(编辑链接和添加的代码)

我发现了这个问题。

Stephen Chu是对的,因为我错过了sqlite驱动。 但是,我可以在这个过程中遇到更多的麻烦。

SDK附带两套dll。 一组驻留在$ BASEDIR / bin中,另一组驻留在$ BASEDIR / qt / bin中。 前者包含Qt Creator使用的dll,后者则是您希望随可执行文件一起提供的dll。

我需要采取sqlite插件(qsqlite4.dll),并将其复制到APP_DIR / sqlplugins。 我的问题是我使用错误的qsqlite4.dll文件。

非常感谢大家对这个问题的贡献。

为了将来的参考,这个问题也在这里讨论: http : //www.qtforum.org/article/34639/qt4-program-crashing-unless-sdk-installed.html