Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Run .EXE without Qt

[ Solution ]

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

I tried to copy the DLL's from the BIN folder to the release of my project, but it did not work.

I tried the following:

  • I copy all dll's folder d:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin
  • And pasted it in the folder of my project: d:\projects\mybrowser\mybrowser-build-Desktop_Qt_5_0_1_MinGW_32bit-Release\release
  • and send it to another computer without Qt
  • In computer without Qt, I installed vcredist_sp1_x86.exe and tried to run my application browsertest.exe

The following error occurred:

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

Q: What I really want to know:

How do I run an application built in Qt on other computers (Windows) without Qt installed?

Details:

  • Qt5.0.1 32bit
  • mingw 4.7 32bit
  • QtCreator 2.6.2
  • Windows 7 64bit.
  • Intel i5

Folders:

  • D:\Qt\Qt5.0.1\5.0.1\mingw47_32
  • D:\Qt\Qt5.0.1\Tools\MinGW

Qt/Mingw:

  • D:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin\qmake.exe
  • d:\Qt\Qt5.0.1\Tools\MinGW\bin\gcc.exe

File .pro:

QT += webkitwidgets network core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = browsertest
TEMPLATE = app

RC_FILE = browser.rc

SOURCES += main.cpp\
 mybrowser.cpp

HEADERS += mybrowser.h

FORMS += mybrowser.ui

If any information you missed, please let me know. grateful

like image 945
Guilherme Nascimento Avatar asked Apr 15 '13 19:04

Guilherme Nascimento


People also ask

Is Qt Creator necessary?

You certainly don't have to use QtCreator to write a Qt program. You also don't have to use qmake but you are asking for trouble by not using it. To do anything even remotely interesting in Qt you will inevitably end up subclassing QObject .

What is Qt runtime?

Qt (pronounced "cute") is cross-platform software for creating graphical user interfaces as well as cross-platform applications that run on various software and hardware platforms such as Linux, Windows, macOS, Android or embedded systems with little or no change in the underlying codebase while still being a native ...


1 Answers

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.

like image 178
Guilherme Nascimento Avatar answered Oct 07 '22 23:10

Guilherme Nascimento