Qt Sqlite qwt 发布过程中碰到的问题runtime error

时间:2023-03-09 02:41:18
Qt Sqlite qwt 发布过程中碰到的问题runtime error

qt版本:4.8.0

qwt版本:6.1.2

使用dll show检测缺少的dll,或者笨一点的方法,点击运行差什么找什么放进去;

左上显示exe调用哪些dll,右边是dll又再次调用啦哪些dll;

Qt Sqlite qwt 发布过程中碰到的问题runtime error

全部的dll都加在进去了还是不行,参考了以下几个blog

http://walkerqt.blog.51cto.com/1310630/1256745

http://blog.csdn.net/lulinqing/article/details/10895401

https://www.cnblogs.com/smoozer/archive/2009/06/12/1486382.html

等,若干,但是发现并非如此,后来我怀疑是不是越界了【这边发现qsqlquery 这个变量去获取数据库的数据不能再作为私有成员去使用,否则会崩,后面使用我是在哪里用就在哪里定义一个,这个具体不知道qt是怎么回事的,望高手解答】,debug下反汇编结果也没找到想要的答案,在自己的电脑上没有环境配置,直接添加上述dll即可运行,

后来经过错误日志输出,找到问题是sqlite这边的驱动未加载,但是在模块中明显能输出自带sqlite的驱动,随后怀疑的是配置文件驱动这块,发现添加的文件中,

sqlite调用驱动文件是使用sqldrivers文件夹中的驱动,而我直接是把里面的全部文件拿出来,这就导致程序直接崩溃,sqlite找不到驱动,但是即使放到文件夹下,

名称不是sqldrivers一样是崩溃,【经过测试把qt安装目录下,plugins/sqldrivers,这个文件夹改了名字,在自己的电脑下一样是崩溃的】。

所以总结出,驱动调用的问题,导致runtimes,但是这只是qt环境下,并非VC++x.0,非MS的问题,希望读者看清楚了。

以及qwt不能qdebug跟release混编,

解决办法:

先把qwtd.dll  qwt.dll考到新建文件夹lib下,然后对应使用的编译方式就调用对应的dll

在pro工程文件中调用:

debug:      LIBS += -L$$PWD/lib/  -l pwtd               //debug编译的时候就把下面release注释

release :  LIBS += -L$$PWD/lib/  -l pwt                 //同理要发布的时候则把上面debug给注释掉否则会崩溃

注意:不能同时调用,即不能混合编译,默认调用第一条,若是debug在release,然后运行release的话一样会出现runtime error,

用debug的时候把release给注释掉就好了,相反使用release也是同理。