how to configure and deploy QT to run platform independently? - qt

I am new to QT. I am using "qt creator 5" with "opencv" on ubuntu 13.04. I want to run program written and executed on my machine is to be executed as well on other windows and Ubuntu machine.
thanks in advance

On Linux:
You should place Qt so files along the release version of your executable. These are libQtCore.so, libQtGui.so and possibly the ones for other modules that you have used. These so files are in your installed Qt Directory in lib folder or in director /usr/lib/i386-linux-gnu. If you are using plugins you should place their so files in a folder named plugins beside your binary. In case of using icons and images you should ship their so files like libqico.so and libqsvg.so in a folder named imageformats.
On Windows:
You can compile your code on Windows using Qt Creator and Microsoft Visual C++ Compiler.
You should place Qt DLLs along the release version of your executable. These are Qt5Core.dll, Qt5Gui.dll and possibly the ones for other modules that you have used. These dll files are in your installed Qt Directory in bin folder. You should also place msvcr100.dll and msvcp100.dll in case you are using MSVS2010. If you are using plugins you should place their dll in a folder named plugins beside your exe. In case of using icons and images you should ship their dlls like qico.dll and qsvg.dll in a folder named imageformats.

Related

How to build qt .lib files out of .prl files

I'm new to Qt. I'm under Win 10, 64bit, using Visual Studio 2019.
I installed Qt 5.15.1 a while ago to work on an open source project. Python and CMake are also installed. vcvarsall.bat was also executed.
Now I'm working on a new project where I need QtCharts. I found that QtCharts was not installed by default. So I installed QtCharts with the Qt MaintenanceTool.exe. After that, I was expecting to see the *.lib files added to the lib folder but what I see are added *.prl files.
What is the next step for me to get the *.lib files.
Well, I found the .lib files I was expecting are there in the lib folder. I'm not sure how and when they got there. I re-checked in the lib folder after I succesfully built Qt provided examples that use QtCharts within Qt Creator. The dates on the files are from back to September 2020, though. Like if the files had been copied from another folder or from an archive.
Anyway. My problem is solved.

mingwm10.dll missing in the bin folder

I was trying to create a exe file of my Qt project.
I found this post: How to create executable file for a Qt Application?
and realised that i dont have a mingwm10.dll file in that directory.
Are there any other ways of creating a exe file or any other location where mingwm10.dll might be located?
I am using qt 5.6.
mingwm10.dll is a runtime file for the MinGW.org toolchain. Qt moved towards a MinGW-w64-based toolchain (which is essentially an expanded and newer implementation of the Win32 headers and import libraries), which doesn't have this runtime dependency. Ignore it, you don't need it. You might need the libgcc and libstdc++ DLLs though, but that's the same with any (non-statically built) toolchain.
Note you can use the windeployqt utility to automatically copy over all runtime depencies of an executable. You can enable it by adding windeployqt to CONFIG if you're using qmake, or you could just run it yourself:
windeployqt my_app.exe
This command will copy all DLLs (including the Qt platform plugins etc.) so that the application can be run by e.g. double-clicking, instead of only in the specific environment of an IDE.

Where can I download qmlscene for Ubuntu

MMMMMM#unbuntu:~/QT/test4Qml$ qmlscene main.qml
qmlscene: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmlscene': No such file or directory
My Qt Development Environment does not have qmlscene. I googled it, and I only found *.deb. How should I do it?
As far as I know, Qt is not installed by default in /usr/lib/x86_64-linux-gnu/qt4. That directory is the default path when linux detects a dependency which requires Qt.
Where did you installed Qt? How did you installed it? Did you set the PATH environment variable to where Qt binaries are installed?
Usually, you have to follow the next steps:
1.- Install the the basic requirements for building Qt applications.
2.- Download Qt. I recommend Qt 5 using an offline installer. Otherwise, you'd need to compile from the source. Here you have a list of older versions of Qt.
3.- Set the environment variable PATH to the directory where you Qt bin directory is installed.

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
To distribute your application you need to copy the DLLs (only the DLLs necessary).
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
Paste the folder of your application.
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
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):
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.
"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
windeployqt (delivered with QT 5.2+) should do (most?) of the work

.exe not running through QtCreator and from outside in Qt 4.8.1. issues regarding dll

I have Qt 4.8.1 installed on a windows 7 64 bit OS. I am using opencv and Qt together for my project.
For opencv dll's i gave the necessary path and everything in .pro. Everything was working fine until yesterday.
My code gets compiled successfully, but now when i run, it says that abc.exe executed with code -1073741511.
When I manually run the .exe file from debug or release folder it says that some entry point could not be located in QtCore4.dll.
I tried everything, from setting the Qt & opencv Dlls in %PATH% environment variable to copy and pasting the dlls to the same folder to that of .exe
i hav seen the .exe through dependency walker also and it shows me red color in Link checksum field of QtCore4.dll.
Can anybody help me on this?????
Make sure you are not using (by using i mean copy/add to path) a wrong dll, i mean a dll that was built with a different compiler, example the default (MinGW version) SDK has two versions of QtCore.dll: the correct one (built with MinGW): QT_INSTALL_PATH/qt/bin and one built with some version of VS: QT_INSTALL_PATH/bin (this one is used by Creator and other tools)

Resources