首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt4程序崩溃,除非安装SDK

Qt4程序崩溃,除非安装SDK
EN

Stack Overflow用户
提问于 2010-10-20 23:27:16
回答 2查看 596关注 0票数 2

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

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

现在,如果我将包含可执行文件和DLL的文件夹复制到一台未安装SDK的新计算机上,它将正常运行,直到我尝试搜索为止。只要我点击搜索按钮,我就可以看到以下错误:

代码语言:javascript
复制
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系统。

EN

回答 2

Stack Overflow用户

发布于 2010-10-21 06:48:46

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

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

代码语言:javascript
复制
 QApplication::addLibraryPath(QCoreApplication::applicationDirPath() + "/plugins");

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

票数 2
EN

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3979526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档