我已经编写了一个开源程序,它已经作为GPL发布,使用Qt4 LGPL SDK构建。该程序能够在可选的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文件了!
我错过了什么魔法?
附注:这两台机器都是新安装的Windows XP系统。
发布于 2010-10-21 06:48:46
您可能有一些库或Qt插件没有部署到目标计算机。它很可能是SQL驱动程序插件。这里有一些关于它的信息:http://doc.trolltech.com/latest/deployment-windows.html#qt-plugins
您需要将所需的Qt插件复制到可执行文件旁边的目录中。并在您的main()中添加类似以下内容
QApplication::addLibraryPath(QCoreApplication::applicationDirPath() + "/plugins");(编辑的链接和添加的代码)
发布于 2010-10-22 19:37:58
我找到问题了。
Stephen Chu是正确的,因为我错过了sqlite驱动程序。然而,我可以在这个过程中遇到更多的复杂情况。
SDK自带了两组dll。一个集合位于$BASEDIR/bin中,另一个位于$BASEDIR/qt/bin中。前者包含Qt Creator使用的dlls,而后者是您希望随可执行文件一起发布的dlls。
我需要获取sqlite插件( qsqlite4.dll )并将其复制到APP_DIR/sqlplugins。我的问题是我使用了错误的qsqlite4.dll文件。
非常感谢为这个问题做出贡献的每一个人。
为了便于将来参考,这里也讨论了这个问题:http://www.qtforum.org/article/34639/qt4-program-crashing-unless-sdk-installed.html
https://stackoverflow.com/questions/3979526
复制相似问题