How to create executable file for a Qt Application

2020-02-08 01:10发布

I've been searching on the internet for some useful and clear information about this, it's annoying that such a trivial thing is so hard to do.

What I need is to create an executable file for my Qt project, in order to run it in other computers. My project runs nicely in the Qt Creator, but when I try to run the executable created in the release folder I get errors about some dll missing, and though I have put all of them in the same directory of my .exe I now got some errors about entrypoints in procedures inside the dll (QtCore4.dll).

The solution looks like to be a static linking, I've found many information about it, but none of them really helped me. Here is what I have tried so far:

  • Using the executable created in the release folder as I said above.
  • Static Linking, following this tutorial (and many others, all almost the same thing): http://doc.qt.io/qt-4.8/deployment-windows.html but I get the following error during the "configure -static": NMAKE : fatal error U1077: '"c:\Arquivos de programas\Microsoft Visual Studio 9. 0\VC\BIN\cl.EXE"' : return code '0x2' Stop. Building qmake failed, return code 2

For that I couldn't find any solution, so here I am, just trying to create an executable file for my Qt project, hope you guys can give me some light here.

4条回答
闹够了就滚
2楼-- · 2020-02-08 01:47

Basically you have to look for mingw subfolder deep into qt tree, where qt utilities reside, and copy needed dll's.

These are the steps I follow, based upon QT 4.7.4, for packaging the application with correct shared libraries.

  1. Let's say you've installed QT under c:\qtsdk
  2. Open your project, and compile it in release mode.
  3. Go to this directory: C:\QtSDK\Desktop\Qt\4.7.4\mingw\bin -- it contains all shared libraries. Debug libraries end with a "d" -- frex, QtCore.dll is release version, while QtCoreD.dll is debug version
  4. Copy at least these files into your release directory (where your .exe lies)

    • mingwm10.dll
    • libgcc_s_dw2-1.dll
    • QtCore4.dll
    • QtGui4.dll

    I just built, tested and deployed a dummy project this way.

查看更多
再贱就再见
3楼-- · 2020-02-08 02:03

So you downloaded Qt SDK and you want to link Qt libraries statically into you application, right?

First of all, if you link statically, you don't need any Qt*.dll to be present anywhere because it is built into the application. So that alone means that your application is built using dynamic linking.

From my experience, that safest way to get it all working is:

Download Qt sources, build and install them with nmake ( using Visual Studio Command Prompt from Menu Start -> Application -> Visual Studio 2008 ). Just remember that the size of the statically linked application is dependent on the size of the *.libs and these are dependent on the pre-build configuration, for example, you can minimize the size of you application by turning off some features ( this is an example config for MacOSX, just watch out for the ones specific for Windows and add proper plaftorm - see configure.exe --help for details ):

./configure -arch x86 -platform macx-g++ --universal -cocoa -debug-and-release -opensource -static -fast -no-accessibility -no-sql-sqlite -no-qt3support -no-opengl -no-openvg -qt-zlib -no-gif -no-libmng -qt-libmng -no-libtiff -qt-libjpeg -no-3dnow -sse -no-sse2 -no-openssl -no-dbus -no-phonon -no-multimedia -no-audio-backend -webkit -no-script -no-scripttools -no-declarative -nomake demos -nomake examples -no-exceptions -no-accessibility -confirm-license

Install, setup and use Visual Studio Add-In for you Qt project (here ).

Good Luck! :)

查看更多
手持菜刀,她持情操
4楼-- · 2020-02-08 02:07

Here is what I did and I got it to work after some time;after making sure that your program builds inside Qtcreator,go to the directory that contains your exe and double click on it.(I'm using windows and don't know if it is the same on other platforms).A window should popup telling you which .dll is missing.Go to the directory where Qt is installed and type the exact name in the search bar(top-right in Windows 7) and the dll should show up in search results.Right click and choose open file location.Copy the file where your exe is located .Double click on the exe again.If another .dll is missing repeat the same thing until none is missing.In the end your program should run. Hope this helps.

查看更多
相关推荐>>
5楼-- · 2020-02-08 02:14

Do these steps:

1- Open qt command-line window.

Qt command-line window

2- Go to the directory which .exe file exists (using cd command).

3- Run "windeployqt.exe --quick ." command

4- Run your exe file and enjoy it!

This video is great

查看更多
登录 后发表回答