Problems after building Qt 5.11.2 open source 32 bit with MSVC 2017
I have been successfully using Qt 5.8 (from qt-opensource-windows-x86-msvc2015-5.8.0.exe) for several years.
I fear that later versions of Qt will not become available in the future. For example, www.qt.io/download no longer contains links to pre-compiled versions (such as qt-opensource-windows-x86-msvc2015-5.8.0.exe)
So, I decided to attempt to build Qt from source on Windows.
I have successfully built many versions of Qt on Linux in the past, but I have never been able to build Qt on Windows.
I am NOT able to build and install Qt 5.11.2 open source on Windows/MSVC 2015 due to problems with the QWebEngine compile failing. The QWebEngine compile absolutely requires a 64bit linker.
So after much research I came to the conclusion that I needed to obtain MSVC2017 to get a build to work.
Through much trial and error I found that the source and destination paths MUST be very short or I get "Path too long" build errors.
But, I now have been able to build and install Qt 5.11.2 open source on Windows/MSVC 2017 using a 64_86 Visual Studio command prompt.
I am able to create a new GUI project that builds and runs with it.
But although I can also compile my huge existing code base, none of the applications run due to problems with DLL's (they load and immediately unload)
I suspect problems with 64 vs 32 bit exec/dlls but cannot find any obvious issue. Depends shows several Windows 64 bit DLLs.
NOTE: I require 32 bit executables due to hardware vendors only providing 32 bit driver interfaces.
Here is the configure command used (where BUILD_INSTALL_DIR is 5.11.2:
..\qt5\configure -prefix C:\Qt\%BUILD_INSTALL_DIR% -verbose -debug-and-release -opensource -confirm-license -icu -opengl desktop -shared -plugin-sql-mysql -nomake examples -nomake tests -platform win32-msvc2017 -openssl-linked OPENSSL_LIBS="-lssleay32 -llibeay32" -I C:\openssl\include -L C:\openssl\lib -I C:\MySQL\include -L C:\MySQL\lib ICU_PREFIX=C:\ICU -I C:\ICU\include -L C:\ICU\lib
Are there new requirements for the project files? I looked at the test GUI project file and did not see anything special that is not in my project files.
Any suggestions for further investigation would be appreciated
Re: Problems after building Qt 5.11.2 open source 32 bit with MSVC 2017
Quote:
Originally Posted by
ForestDweller2
I have been successfully using Qt 5.8 (from qt-opensource-windows-x86-msvc2015-5.8.0.exe) for several years.
I fear that later versions of Qt will not become available in the future.
What would the be gain of making Qt unaccessible to developers?
Quote:
Originally Posted by
ForestDweller2
For example,
www.qt.io/download no longer contains links to pre-compiled versions (such as qt-opensource-windows-x86-msvc2015-5.8.0.exe)
Because it is a very old version and not one of the long-term-support ones.
There are still downloads for 5.6 and 5.9 and obviously the most recent version.
http://download.qt.io/official_releases/qt/
Quote:
Originally Posted by
ForestDweller2
Through much trial and error I found that the source and destination paths MUST be very short or I get "Path too long" build errors.
Yeah, Windows has weird restrictions on command line lengths.
I think there are tools to map paths to new drive letters to reduce the length
Quote:
Originally Posted by
ForestDweller2
NOTE: I require 32 bit executables due to hardware vendors only providing 32 bit driver interfaces.
It is always annoying how backwards some vendors are.
Quote:
Originally Posted by
ForestDweller2
..\qt5\configure -prefix C:\Qt\%BUILD_INSTALL_DIR% -verbose -debug-and-release -opensource -confirm-license -icu -opengl desktop -shared -plugin-sql-mysql -nomake examples -nomake tests -platform win32-msvc2017 -openssl-linked OPENSSL_LIBS="-lssleay32 -llibeay32" -I C:\openssl\include -L C:\openssl\lib -I C:\MySQL\include -L C:\MySQL\lib ICU_PREFIX=C:\ICU -I C:\ICU\include -L C:\ICU\lib
That looks correct. Can you check if the resulting Qt DLLs are 32 bit?
Quote:
Originally Posted by
ForestDweller2
Are there new requirements for the project files?
No, if you run the correct qmake it should be enough.
Since you can run new test applications the build itself seems to be OK.
Cheers,
_
Re: Problems after building Qt 5.11.2 open source 32 bit with MSVC 2017
Quote:
Originally Posted by
anda_skoa
Since you can run new test applications the build itself seems to be OK.
_
It's now beginning to make sense. I downloaded qt-opensource-windows-x86-5.11.2.exe to see if it too produced the same outcome and wow, this installer actually includes MSVC 2015 32 bit, MSVC 2015 64 bit, MSVC 2017 64 bit, and a host of other platform installs, (not sure why it is called qt-opensource-windows-x86-5.11.2.exe). Further, there are a host of other optional 'modules' including Qt WebEngine with the note "On Windows, the module is only available under MSVC 2017 64 bit".
So it seems that the problem I have been fighting is related to attempting to build a 32 bit version of Qt WebEngine...a very long story...(I already bought MSVC 2017 because I read that it was necessary to build Qt WebEngine).
And this also means that I am either stuck at Qt 5.8 or convert all of my applications that depend on webenginewidgets to some other widgets(?) or move to 64 bit with radically reduced hardware support.
Or perhaps, I could try (again) to use Qt 5.8 Qt WebEngine with Qt 5.11 or Qt 5.12 MSVC 2015 32 bit as outlined in https://doc.qt.io/qt-5/qtwebengine-platform-notes.html under "Using Earlier Qt Versions to Build Qt WebEngine" (which failed completely when I tried it).
It seems that the direction (future) of Qt is 64 bit and it is time to just accept this.
Of course, I could then argue that the Linux platform would be more of a possible option!
Re: Problems after building Qt 5.11.2 open source 32 bit with MSVC 2017
Quote:
Originally Posted by
ForestDweller2
It's now beginning to make sense. I downloaded qt-opensource-windows-x86-5.11.2.exe to see if it too produced the same outcome and wow, this installer actually includes MSVC 2015 32 bit, MSVC 2015 64 bit, MSVC 2017 64 bit, and a host of other platform installs, (not sure why it is called qt-opensource-windows-x86-5.11.2.exe).
Probably to just differentiate between architectures, i.e. "normal Intel", not IA64, not ARM, etc.
Quote:
Originally Posted by
ForestDweller2
And this also means that I am either stuck at Qt 5.8 or convert all of my applications that depend on webenginewidgets to some other widgets(?) or move to 64 bit with radically reduced hardware support.
You could check if the QtWebKit "forward port" can handle your needs and whether it is available in 32 bit
https://github.com/annulen/webkit/wiki
Quote:
Originally Posted by
ForestDweller2
It seems that the direction (future) of Qt is 64 bit and it is time to just accept this.
This is unfortunately mostly a Google/Windows problem, i.e. Google not supporting this kind of build of the Blink Engine on Windows.
Also the reason QtWebEngine can't be built on Windows with other compiler than MSVC.
One option you could investigate is separating hardware access from UI.
E.g. running a headless program (child program or service) in 32bit mode for accessing the hardware and running the UI with 64 bit.
Cheers,
_