After preparing the Qt framework, I needed to check if everything works; therefore I built a very simple Qt (5.2.1) application, the GUI-equivalent of a “Hello-World” program.
Building the sample application
-
Open “Visual Studio 2010” and create a new, blank project:
File -> New -> Project…
Visual C++ -> General -> Empty Project -
Add a source code file to the project with the following content:
#include <QtWidgets/QApplication> #include <QtWidgets/QLabel> int main (int argc, char* argv[]) { QApplication app(argc, argv); QLabel* label = new QLabel("Hello, world!"); label->show(); return app.exec(); }
-
Open Build -> Configuration Manager and under Active Solution Configuration select New…
Name it “Release (x64)” respectively “Debug (x64)” (copy settings from: Release respectively Debug). -
Switch Active Solution Configuration to Release (x64) (respectively Debug (x64)) and switch the platform for both to x64.
-
Open Project -> Properties and set the configuration parameters to the following values (this assumes a release build):
Configuration properties: General : Character Set: Use Unicode Character Set
C/C++: General : Additional Include Directories:
C:\devel\ext\Qt\5.2.1\_64DLL\include
Linker: General : Additional Library Directories:
C:\devel\ext\Qt\5.2.1\_64DLL\lib
Linker: Input : Additional Dependencies:
Qt5Core.lib Qt5Gui.lib Qt5Widgets.lib
(the import libraries for the required Qt DLLs)
Running the sample application
After this, the build process was successful and the result was a small executable file (13 KB).
But the launch of the application failed, with an error message stating that Qt5Core.dll was missing.
The reason: I am using the shared-files approach, meaning the Qt runtime libraries (DLLs) must be present to the program; if built as a static program, they would have been incorporated/linked into the executable file directly.
The solution: Several of the previously built Qt runtime libraries
needed to be copied from C:\devel\ext\Qt\5.2.1\_64DLL\lib
into the working directory of the *.exe:
- Qt5Core.dll
- Qt5Gui.dll
- Qt5Widgets.dll
That way, the small program grew from a mere 13 Kilobyte utility to a 20 Megabyte monster (in the case of static linkage, the same would have happened, only that it would have produced one big exe-file).
But at least the GUI app was running — …but with an console window hanging in the background while the Qt application was open…
To get rid of that, I changed these options in Project -> Properties:
- Linker: System
- SubSystem: Windows (/SUBSYSTEM:WINDOWS)
On the other hand, an additional console window [/SUBSYSTEM:CONSOLE] can come handy at times, for example if one wants to use qDebug() or std::cout for some diagnostic output.)
- Linker: Advanced
- Entry Point: mainCRTStartup
So far, so good.
Film & Television (54)
How To (63)
Journal (17)
Miscellaneous (4)
News & Announcements (21)
On Software (12)
Projects (26)