很多时候,我们在用qt creator编译运行我们所写的程序时,程序能正常启动,但是当我们直接点击debug下面的exe文件时,程序却启动失败,会提示缺少某些dll文件,这是为什么呢?
是这样的,我们所写的qt程序,需要用到很多qt库,但这些库是以动态链接库的形式,加载在程序中的,如果用qt creator,则它会帮助我们将那些所需要的动态链接库链接到程序中去,但如果是我们手动去点击exe文件,则那些dll文件无法加载。如何解决呢?
解决方法有2:
1. 以环境变量的形式,将所需要的dll文件放到某个文件夹下,然后在环境变量中,增加PATH变量(如果原先没有PATH变量的话),将该文件夹的地址放到PATH环境变量中去,这样,程序启动时,能链接到那些dll文件。
2. 直接将那些所需要的dll文件放到自己所写的那个qt程序目录下去。如何知道所需哪些dll文件呢?这个可以通过点击自己的那个exe文件,它自然会提示你缺失那个dll,然后依次添加相应的dll文件即可。
我用vs2010编译器以及对应的qt版本时,就这样可以了。
当我用mingw47_32和Qt5.0.2时,当增加完所提示的所有dll文件后,会出现如下错误提示:
This application has requested the Runtime to terminate it in an unusual way.
出现这个的原因其实还是未添加好所有的dll。需要在目录中建立platforms目录,并在platforms放入qminimal.dll和qwindows.dll两个文件(这两个文件都在plugins下的platforms文件夹下,其它的几个dll都在bin下。)程序才能运行。因为程序在windows平台下运行需要以上两个dll文件。
如果以上还不行的话,还需要在程序目录下添加 libEGL.dll 文件
感受:用qt写的程序,如果包含了dll,那是很大的,通常都超过10M了,真奢侈。