pyqtdeploy-build creates compile errors on windows

Patrick Stinson patrickkidd at gmail.com
Wed Oct 14 08:24:09 BST 2020


Turns out including Python.h before including QtGui fixes the compile error. This is reproducible in the pyqtdeploy demo project, for example if you add #include <QtGui> at the top of pdytools_module.cpp.

Strangely, including windows.h before QtGui should fix this, but it doesn’t.

At any rate, there is no bug fix for pyqtdeploy here and the workaround should just be known.

> On Oct 11, 2020, at 8:39 PM, Patrick Stinson <patrickkidd at gmail.com> wrote:
> 
> Scratch that. Turns out there are two registry keys that affect the long path issue. This is the one that worked for me:
> 
> Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled
> 
> Can’t remember where the other path was.
> 
> Still working on the compile error.
> 
> 
>> On Oct 11, 2020, at 6:18 PM, Patrick Stinson <patrickkidd at gmail.com <mailto:patrickkidd at gmail.com>> wrote:
>> 
>> FWIW, in an effort to test this I tried to build the pyqtdeploy demo. But building the sysroot runs into that unbelievably annoying long pathname problem on windows, for example:
>> 
>> C:\\familydiagram\\vendor\\src\\pyqtdeploy-3.1.1.dev2009161438\\demo\\sysroot-win-64\\build\\qt-everywhere-src-5.15.0\\coin\\provisioning\\common\\windows\\conan_manifests\\libjpeg-turbo\\2.0.3\\qtproject\\stable\\package\\1c8544b57637b92dcdfce760b76b459bde0ce701\\conanmanifest.txt
>> 
>> I haven’t found a fix for this, even allowing for long paths in the windows registry. I gave up building qt on windows for my own app and have just been using the qt.io <http://qt.io/> installer.
>> 
>> How did you build the sysroot for the pyqtdeploy demo?
>> 
>> -Patrick
>> 
>> 
>>> On Oct 9, 2020, at 2:55 PM, Patrick Stinson <patrickkidd at gmail.com <mailto:patrickkidd at gmail.com>> wrote:
>>> 
>>> I get the following compiler errors on a project created from pyqtdeploy-build with VSCode 2019 Community on Windows 10:
>>> 
>>> C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um\winuser.h(4383): error C2061: syntax error: identifier 'LPWNDCLASSEXA'
>>> C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um\winuser.h(4391): error C2061: syntax error: identifier 'LPWNDCLASSEXW'
>>> C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um\prsht.h(609): error C3646: 'hdr': unknown override specifier
>>> C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um\prsht.h(609): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
>>> NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\HostX64\x64\cl.EXE"' : return code '0x2'
>>> Stop.
>>> NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\HostX64\x64\nmake.exe"' : return code '0x2'
>>> Stop.
>>> 
>>> When I remove the following line from pyqtdeploy\builder\lib\post_configuration.pro the error goes away...
>>> 
>>>     DEFINES += MS_WINDOWS NTDDI_VERSION=Py_NTDDI WINVER=Py_WINVER _WIN32_WINNT=Py_WINVER
>>> 
>>> …but then I also got the following warning and unresolved symbols...
>>> 
>>> LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
>>> _ssl.obj : error LNK2019: unresolved external symbol __imp_CertOpenStore referenced in function ssl_collect_certificates
>>> _ssl.obj : error LNK2019: unresolved external symbol __imp_CertCloseStore referenced in function _ssl_enum_certificates_impl
>>> _ssl.obj : error LNK2019: unresolved external symbol __imp_CertEnumCertificatesInStore referenced in function _ssl_enum_certificates_impl
>>> _ssl.obj : error LNK2019: unresolved external symbol __imp_CertFreeCertificateContext referenced in function _ssl_enum_certificates_impl
>>> _ssl.obj : error LNK2019: unresolved external symbol __imp_CertEnumCRLsInStore referenced in function _ssl_enum_crls_impl
>>> _ssl.obj : error LNK2019: unresolved external symbol __imp_CertFreeCRLContext referenced in function _ssl_enum_crls_impl
>>> _ssl.obj : error LNK2019: unresolved external symbol __imp_CertAddStoreToCollection referenced in function ssl_collect_certificates
>>> _ssl.obj : error LNK2019: unresolved external symbol __imp_CertGetEnhancedKeyUsage referenced in function parseKeyUsage
>>> release\Family Diagram.exe : fatal error LNK1120: 8 unresolved externals
>>> 
>>> …which I partially fixed by hacking adding the following to my .pro file:
>>> 
>>> LIBS += -lcrypt32
>>> 
>>> …but then I get a successfully linked exe that exist immediately with a error code of 0.
>>> 
>>> Cheers,
>>> -Patrick
>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20201013/30622b94/attachment.htm>


More information about the PyQt mailing list