除非安装了SDK,否则Qt4程序崩溃

时间:2010-10-20 15:27:16

标签: windows qt sdk qt4

我编写了一个开源程序,我使用Qt4 LGPL SDK构建了GPL。该程序能够在可选的Sqlite3数据库中搜索数据。

这是让我失去理智的原因。我在开发机器上编译程序。当我尝试运行它时,我可以错过有关丢失的DLL。我将这些dll复制到与可执行文件相同的目录中,它现在可以正常工作(mingwm10.dll,libgcc_s_dw2-1.dll,QtCore4.dll,QtSql4.dll,QtGui4.dll),包括数据库搜索。

现在,如果我将带有可执行文件和DLL的文件夹复制到没有安装SDK的新机器上,它会运行正常,直到我尝试搜索。一旦我点击搜索按钮,我就会出现以下错误:

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,什么也不做,我现在可以运行程序并搜索sqlite3文件就好了!

我错过了什么魔法?

P.S。这两台机器都是新安装的Windows XP系统。

2 个答案:

答案 0 :(得分:2)

您可能有一些未部署到目标计算机的库或Qt插件。它很可能是SQL驱动程序插件。以下是有关它的一些信息:http://doc.trolltech.com/latest/deployment-windows.html#qt-plugins

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

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

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

答案 1 :(得分:0)

我发现了问题。

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