我编写了一个开源程序,我使用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系统。
答案 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