Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

windeployqt result gives error "procedure entry point not found" [translated]



  • Hi,
    I have a 64bit Win 10 Machine with Qt 5.14.1 and mingw73_64.
    I've done the following steps:

    • I compile/run program in release mode with kit "Desktop Qt 5.14.1 MinGW 64 bit". Runs fine.
    • I create a folder C:\DeploymentDIS and copy my "Containment.exe" into it
    • the .exe is the only file in this folder
    • I open a (not elevated) console with Win+R / "cmd" / enter.
    • I cd to "C:\Qt\5.14.1\mingw73_64\bin>"

    My qml files are located in a folder named "C:\Users\SeDi\cpp\Containment" (alongside with my c++ sources).

    Now I call

     C:\Qt\5.14.1\mingw73_64\bin>windeployqt.exe --qmldir C:\Users\SeDi\cpp\Containment  --qmlimport c:\qt\5.14.1\mingw73_64\qml\ c:\DeploymentDIS\Containment.exe
    

    The windeployqt.exe job is being done without errors, but when I doubleclick the Containment.exe, I get the error message [translated from German]:

    Procedure entry point '_ZdaPvy' was not found in the DLL 'C:\DeploymentDIS\Qt5Qml.dll'.
    

    plus several more (same point not found in Qt5Gui.dll, Qt5Network.dll, Qt5Quick.dll). The result is the same without defining a qmlimport path

    I figured that this might have to do with some sort of paths problem, like the docs suggest. My path is (copied from echo %path%):

    C:\Qt\5.14.1\mingw73_64\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\ProgramData\Oracle\Java\javapath;C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0\; C:\StrawberryPerl\c\bin;C:\StrawberryPerl\perl\site\bin;C:\StrawberryPerl\perl\bin;C:\Program Files\Git\bin;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Program Files (x86)\Smart Projects\IsoBuster;C:\Program Files\CMake\bin;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\Gpg4win\..\GnuPG\bin;C:\Qt\5.14.1\mingw73_64\bin;C:\Users\SeDi\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\Dr. Memory\bin\;C:\Program Files (x86)\FAHClient;
    

    I have tried to manually replace those dlls by those from C:\Qt\5.14.1\mingw73_64\bin, but they are (as they should be) identical.

    Do I use the tool totally wrong or miss something more subtle?

    I have used it successfully before, but I can't see what I'm doing wrong this time.

    Any help or idea is gratefully appreciated - I am lost!


  • Moderators

    Try updating to Qt 5.14.2, maybe it is some Qt issue and has been fixed?

    And another thing, although it should not have any influence: try running windeployqt from your deployment dir, not from Qt's bin directory.



  • Thanks. sierdizio, hi everybody!

    I've updated to the current 15.0, but to no avail. I've also started the process from within the target directory, but experienced the same problem.
    Current setup:

    • Kit:
    Desktop Qt 5.15.0 MinGW 64-bit, Release Build
    
    • Path info:
    C:\Users\SeDi>echo %path%
    C:\Qt\5.15.0\mingw81_64\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\ProgramData\Oracle\Java\javapath;C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Common Files\Acronis\SnapAPI\;C:\StrawberryPerl\c\bin;C:\StrawberryPerl\perl\site\bin;C:\StrawberryPerl\perl\bin;C:\Program Files\Git\bin;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Program Files (x86)\Smart Projects\IsoBuster;C:\Program Files\CMake\bin;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\Gpg4win\..\GnuPG\bin;C:\Qt\5.15.0\mingw81_64\bin;C:\Users\SeDi\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\Dr. Memory\bin\;C:\Program Files (x86)\FAHClient;
    
    • Call:
    C:\DeploymentDIS2>c:\Qt\5.15.0\mingw81_64\bin\windeployqt.exe --qmldir c:\Users\SeDi\cpp\Containment@Gitlab\dynamicinfectionsimulation\src Containment.exe
    

    Now windeployqt runs smoothly, no visible errors.
    But when I start the program, I get this error message, which is German for "Procedure entry point [...] in DLL [...] hasn't been found." em.png
    Clicking ok, the same message pops up for

    • Qt5QmlModels.dll
    • Containment.exe
    • Qt5Network.dll
      (each time with the same address "_ZdaPvy")

    The Deployment directory has these files: deployDir.png

    I have then decided to try and copy all those dlls manually over from C:\Qt\5.15.0\mingw81_64\bin (except for libgcc_s_sjlj-1.dll which isn't there) into my deploy dir, which is then looking this way (note the different dates and sometimes different size!)
    deployDir2.png

    Starting the exe now results in a new error message:
    em2.png

    I am running out of ideas.



  • It looks like windeployqt picks up some other Qt flavor from you PATH settings.

    Instead of using Win+R and typing CMD to launch a CMD window for running windeployqt, try finding (and starting) the CMD shortcut in the Start menu called 'Qt 5.15.0 MinGW ..."
    Then clean the that C:\DeploymentDIS directory and try running windeployqt again...



  • Thanks a million, @hskoglund !!
    That did the trick - I (quite obviously) wasn't aware at all that these CMD shortcuts existed. That also answers the question in the back of my head, how people who have to deliver multiple projects with differing Qt versions instead, get the job done without manually meddling with the %path% like I did so successlessly...

    Now, after literary years of bad luck with windeployqt it was so worth it to put new effort in this. I can't count the times where I'd copy half of Qt to the deploy dir, only to subsequently delete everything that I could without producing errors...

    Thank you very much, both of you. :-))


Log in to reply