QT当中有关数据库,比如ODBC的功能都是以插件的形式来实现的
比如QT安装包里面都有很多plugin文件夹,里面就包括了很多相关的dirver
像要使用ODBC,都是需要调用QSqlODBCDriver.dll和对应的lib文件的
因此,如果写程序的时候使用动态编译,就需要在每次跑exe的时候,都到QT的安装目录下面去找对应的driver或者dll文件或者lib文件
这会导致程序在发布移植的时候出现很多问题,比如标题乱码之类的问题,同时还需要把所有相关的dll文件都随exe文件一起发布,十分不方便
因此,在实际的使用当中,一般都是需要使用提前在本机上编译好的静态链接库来代替原来的文件
这样编程的时候,就可以解决相关的问题了
不过还有一个问题,就是由于QT都是用plugin来实现很多附加的功能,而这些功能虽然安装了上去,但是默认是不开,我们需要在静态编译的使用命令行来确保这个plugin被添加了上去,同时还需要保证我们需要使用的那些功能plugin的driver都已经添加进去了
如果,当时没有将这些东西添进去,就必须重新静态编译一次,比较麻烦
这个需要我们注意
而像我们这次遇到的“driver not loaded”问题,就是这个问题的典型表现
通过将qsqldriver文件夹当中的文件移到exe所在文件夹中,是可以保证QT的程序在编译器中运行成功,但是,exe文件照样会出相同的“driver not loaded”错误
要保证不出现类似的错误,就要保证原有的程序在静态编译的QT程序包中通过编译,同时这个静态编译还要包括了ODBC,这个比较麻烦,可能只有等到最后才能解决这个问题了
不过总算还能用,很让人郁闷的ODBC和QT
注意一下,下面将转载一下网上很流行的一个静态库编译的方法:
http://blog.csdn.net/tonylk/archive/2009/02/06/3866926.aspx
注意上面这个网址也是转载的,真正写文章的人是夏威夷雪人,可惜qt中文论坛被我们代理屏蔽了,进不去,于是用个可用的网址,遗憾,不过这哥们是牛人,ym之
Subscribe to:
Post Comments (Atom)

No comments:
Post a Comment