Run .EXE without Qt

后端 未结 3 1744
伪装坚强ぢ
伪装坚强ぢ 2020-12-30 13:43

[ Solution ]

I want to run my app created with QtSDK on a machine that does not have Qt installed.

I tried to copy

相关标签:
3条回答
  • 2020-12-30 13:58

    "microsoft visual c++ runtime library: this application has requested the runtime to terminate it in an unusual way"

    That's either an ordinary bug, or sometimes a mix of incompatible dlls
    Use the (free) depends program on your exe to check which dlls it actually uses - it probably isn't linking all of Qt

    Some Qt libs are loaded at runtime from a plugins folder, mostly image formats and database connections - but they woudln't give this error

    0 讨论(0)
  • 2020-12-30 14:13

    To distribute your application you need to copy the DLLs (only the DLLs necessary).

    1. Copy the DLLs necessary from <DRIVE>:\Qt\Qt<Version_qt>\<Version_qt>\mingw<Version_mingw>\ or <DRIVE>:\Qt\Qt<Version_qt>\<Version_qt>\mingw<Version_mingw>\bin\

      eg.: C:\Qt\Qt5.2.0\5.2.0\mingw48_32\ or C:\Qt\Qt5.2.0\5.2.0\mingw48_32\bin

    2. Paste the folder of your application.

    3. Then copy the folders inside of <DRIVE>:\Qt\Qt<Version_qt>\<Version_qt>\mingw<Version_mingw>\plugins

      eg.: C:\Qt\Qt5.2.0\5.2.0\mingw48_32\plugins

    4. Paste the folders of your application.

    Note: In this example (below), it was necessary to copy DLLs from different places and remove the Debug DLLs (used only to compile in Debug).

    Note that the debug dlls end with "d.dll", for example: Qt5Core.dll and Qt5Cored.dll or Qt5Concurrent.dll and Qt5Concurrentd.dll, the ending with "d.dll" should not be copied.

    The structure should look something like this (example):

    • c:\project\app.exe (your app created in Qt)
    • c:\project\Qt5Core.dll (dll from qt/mingw folder or qt/mingw/bin)
    • c:\project\platforms (folder from qt/mingw/plugins folder)
    • c:\project\platforms\qminimal.dll (dll from qt/mingw/plugins/platforms folder)

    Only some DLLs the mingw will be needed, so I recommend using the Dependency Walker 2.2

    The result should look like this (not all dlls are needed, this can vary by project type): app folder


    Thanks to:

    • +1 for @MartinBeckett, showed me the program to find the DLLs required.

    • +1 for @WouterHuysentruit, thanks to the application I indicated, I discovered that the contents of the mingw\plugins folder should go straight into the application folder.

    • @WouterHuysentruit I would consider your answer as correct, but you just said, so I put a simpler explanation. Thanks anyway.

    0 讨论(0)
  • 2020-12-30 14:20

    windeployqt (delivered with QT 5.2+) should do (most?) of the work

    0 讨论(0)
提交回复
热议问题