Qt Sqlite qwt 发布过程中碰到的问题runtime error
qt版本:4.8.0
qwt版本:6.1.2
使用dll show检测缺少的dll,或者笨一点的方法,点击运行差什么找什么放进去;
左上显示exe调用哪些dll,右边是dll又再次调用啦哪些dll;
全部的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也是同理。