Exe file does not run without QtCreator

2019-01-11 08:12发布

问题:

I installed Qt 5.0.1 for Windows 32-bit (MinGW 4.7, 823 MB)

Then I created simple Quick 2 application and compiled it. Application is located in the its folder, and apllication run from QtCreator. And I want to run this exe file without QtCreator. To do this, I copy the files from the C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin:

  1. Qt5Core.dll
  2. icuin49.dll
  3. libgcc_s_sjlj-1.dll
  4. libwinpthread-1.dll
  5. libGLESv2.dll
  6. libstdc++-6.dll
  7. qminimal.dll
  8. Qt5Gui.dll
  9. Qt5Network.dll
  10. Qt5Qml.dll
  11. Qt5Quick.dll
  12. Qt5V8.dll
  13. qwindows.dll

And then I get error:

Точка входа в процедуру _ZN6icu_4910CharString15getAppendBufferEiiRiR10UErrorCode не найдена в библиотеке DLL icuuc49.dll

Translate:

The procedure entry point _ZN6icu_4910CharString15getAppendBufferEiiRiR10UErrorCode not found in library DLL icuuc49.dll

If I copy the exe file to a folder C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin (where are all the dll), the program runs, but nothing shows.

If I copy the exe file to a folder C:\Qt\Qt5.0.1\Tools\QtCreator\bin (where are all the dll), the program does not run.

What to do? Where and what libraries to take the program to run?

Solved. The final list of libraries from C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin:

  1. icuin49.dll
  2. icuuc49.dll
  3. libEGL.dll
  4. libgcc_s_sjlj-1.dll
  5. libGLESv2.dll
  6. libstdc++-6.dll
  7. libwinpthread-1.dll
  8. Qt5Core.dll
  9. Qt5Gui.dll
  10. Qt5Network.dll
  11. Qt5Qml.dll
  12. Qt5Quick.dll
  13. Qt5V8.dll

And I forgot to add the folder with qml files.

回答1:

Put your executable in a neutral directory, like a freshly created one your desktop. Then run dependency walker. It will show you the list of missing libraries. For a start Qt5Core.dll, libgcc_s_sjlj-1.dll and the one you specified will be one of the missing. You have to find them on your system, and copy one by one to this directory. Most of the missing will be in the directory you specified (C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin). If you cannot find the other ones edit the question with a list.

Note:

Types of missing files in the General case :

  • Qt libraries. If Qt was compiled as static, they should not appear
  • Misc libraries Qt depends on : OpenSSL for example. Not appearing if both Qt and this lib is static
  • Compiler libraries : ex, gcc libgcc_s_sjlj for the OP. They are usually dynamic and need to be copied if they are not already in the library search path.


回答2:

Add "C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin" to your path. Then the application should work.



回答3:

Dont worry about the missing dll files. put your .exe file into the folder of this path : "C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin"

you can run the .exe file now . it works fine.