Qt发布程序后,连接数据库失败问题

zhaoxuan907509404 2014-05-11 04:32:57
环境:Qt4.8.0+ODBC+SqlServer
开发的一个聊天系统,代码部分没有错误(debug版本和release版本在调试环境中均正常),但是现在我想发布程序,在release版本中添加各种动态库文件后,运行exe没有问题,但是在登陆连接数据库时候,提示打开数据库失败。

我已经尝试过过的解决方案:
1、通过dll show查看关联的dll并复制添加,未解决问题;
2、通过Depends查看关联的dll,同上;
3、将Release版本的exe复制到Qt版本下的bin通过删除冗余文件,留下的dll和通过前两种方案一样;

总结:release版本的exe文件只能在我本机上运行,拷贝到其他测试机,exe可以运行但是会报打开数据库失败错。

坐等大神回复。。。
...全文
2661 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
DreamLife. 2016-11-23
  • 打赏
  • 举报
回复
是不是在移植的机器上面也需要有sql的环境了???
诺水城子 2016-11-23
  • 打赏
  • 举报
回复
发布的时要把操作数据库用到的库文件一并拷过去
Little柯南 2016-11-21
  • 打赏
  • 举报
回复
引用 14 楼 u010828750 的回复:
遇到同样情况,不过我用的是mysql数据库,楼主说mysql的例子可以运行,希望可以交流一下,QQ2771407307
您能用mysql,那么你使用Qt自带的sqllite也是可以的,你可以试试,小程序我一般都使用这个,没出现过问题
Little柯南 2016-11-21
  • 打赏
  • 举报
回复
各位挖坟高手啊
江河颂 2016-11-21
  • 打赏
  • 举报
回复
遇到同样情况,不过我用的是mysql数据库,楼主说mysql的例子可以运行,希望可以交流一下,QQ2771407307
GGreen2011 2016-05-16
  • 打赏
  • 举报
回复
问题解决了吗
北溟之鱼 2014-05-13
  • 打赏
  • 举报
回复
静态编译居然还要打上这么动态库? 我现在编译发行的都是一个独立的exe, release大概8M多,然后用aspack等压缩后只有3M
zhaoxuan907509404 2014-05-12
  • 打赏
  • 举报
回复
引用 4 楼 feilinhe 的回复:
在你的.exe目录下(与plugins目录并行)那就创建qt.conf文件(记事本即可),里面这样写: [Paths] Plugins = ./plugins
已经尝试,还是不起作用。
zhaoxuan907509404 2014-05-12
  • 打赏
  • 举报
回复
引用 7 楼 Inhibitory 的回复:
[quote=引用 5 楼 zhaoxuan907509404 的回复:] 在不重新编译情况下,仅仅添加qt.conf内容为: [Paths] Plugins = ./plugins 直接运行release版本下的exe仍然显示为:打开数据库失败。。。 Ps:发布版本运行环境需要安装SqlServer吗?
没插电的电脑就搞开机。[/quote] 我尝试过下载一个别人的Qt开发的数据库项目,它使用的是MySqL,而我的本地是没有这个数据库的,但是我仍然可以使用注册,登陆功能,请问作何解释?
zhaoxuan907509404 2014-05-12
  • 打赏
  • 举报
回复
引用 6 楼 twj5817 的回复:
1、选择编译release的版本 在main函数中添加 QString strLibPath(QDir::toNativeSeparators(QApplication::applicationDirPath())+QDir::separator()+"plugins"); a.addLibraryPath(strLibPath); 2、要确保使用的驱动是release版本的, 只要满足以上两个条件,是能链接上数据库的
QDir这个类不识别,你包含的哪个头文件。谢谢。
Inhibitory 2014-05-12
  • 打赏
  • 举报
回复
引用 5 楼 zhaoxuan907509404 的回复:
在不重新编译情况下,仅仅添加qt.conf内容为: [Paths] Plugins = ./plugins 直接运行release版本下的exe仍然显示为:打开数据库失败。。。 Ps:发布版本运行环境需要安装SqlServer吗?
没插电的电脑就搞开机。
绝地大反击 2014-05-12
  • 打赏
  • 举报
回复
1、选择编译release的版本 在main函数中添加
QString strLibPath(QDir::toNativeSeparators(QApplication::applicationDirPath())+QDir::separator()+"plugins");
a.addLibraryPath(strLibPath);



2、要确保使用的驱动是release版本的,
只要满足以上两个条件,是能链接上数据库的
zhaoxuan907509404 2014-05-11
  • 打赏
  • 举报
回复
在不重新编译情况下,仅仅添加qt.conf内容为: [Paths] Plugins = ./plugins 直接运行release版本下的exe仍然显示为:打开数据库失败。。。 Ps:发布版本运行环境需要安装SqlServer吗?
feilinhe 2014-05-11
  • 打赏
  • 举报
回复
在你的.exe目录下(与plugins目录并行)那就创建qt.conf文件(记事本即可),里面这样写: [Paths] Plugins = ./plugins
zhaoxuan907509404 2014-05-11
  • 打赏
  • 举报
回复



有图有真相。。。各种尝试都尝试过了
feilinhe 2014-05-11
  • 打赏
  • 举报
回复
你得把qsqlodbc.dll放到plugins/sqldrivers/下 或者创建qt.conf配置文件,里面指定Plugins的Path,同样得把qsqlodbc.dll放到plugins/sqldrivers/下
zhaoxuan907509404 2014-05-11
  • 打赏
  • 举报
回复
对了还尝试过方案: 在main.cpp下添加 QApplication::addLibraryPath("./plugins"); 在release下的exe目录下创建plugins里面包含sqlodbc的dll

16,818

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧