我做了一个链接mysql数据库的小程序,用到mysql驱动(我自己编译的,qt因为版权问题不自带),开发机上程序好用,换了别的机器就不行了,说缺少驱动,其实是因为我是动态编译的程序,所以需要把插件(都是DLL文件)放到程序目录下,程序才能找到,但是怎么放也是有说法的,这篇文章就告诉你动态编译qt程序应该怎么加载这些插件
main函数里面写上这句
a.addLibraryPath(a.applicationDirPath()+"/plugins/"); //a 是程序的指针
这句用来网程序的运行环境添加一个路径,plugins的文件夹路径就是所添加的内容
你可以通过Librarypath()函数验证自己添加的路径是否正确
在程序的根目录下建立一个pluagins文件夹,在这个文件夹中建立一个插件所属的文件夹,把你用到的插件的dll放在里面
比如你像我一样用的是数据库方面的,那么你就应该在plugins文件夹里面放上一个sqldrivers文件夹,再往这个文件夹里面放上你用的插件dll,这样程序才能找得到,如果你需要用中文化的插件qcncodecs4.dll,那么你应该在plugins文件夹下面建立一个codecs文件夹,把qcncodecs4.dll和qcncodecsd4.dll放在里面
总之,要保证plugins文件夹下面的结构和你的qt安装文件夹下的plugins文件夹里的结构一致才行
这样你再次编译的程序就可以找到自己用到的插件了,希望你用到的插件不是很多.....
个人认为qt的程序最终还是静态编译的好,这样少带很多DLL