QMake variable for Qt Creator bin folder: needed for deploying D3DCompiled_43.dll



  • Hello,

    Qt 5 apps require, among others, D3DCompiler.dll.

    This file is shipped with in the following folder:

    c:\Qt\Qt5.1.0\Tools\QtCreator\bin

    I would like to add a rule in the .pro at the deploying step (make install) of my app project in order to copy this file to the app deployment folder, without hardcoding the path that is version dependent.

    Do you know if there is a QMake variable storing the above path? Like $$QT_INSTALL_BINS for the Qt5*.dll.

    May be it doesn't make sense because QMake is not dependent on Qt Creator. In this case Qt Team should release all the necessary dll in $$QT_INSTALL_BINS.


  • Moderators

    Are you sure that you want to ship the dll from ...\QtCreator\bin folder?

    Those dlls are meant for QtCreator IDE. AFAIK for the current build of Qt5.1.0 SDK the QtCreator\bin dlls are the same as the Qt5.1.0 dlls as part for your tool chain. However, if you add a newer (or an older tool chain) the dlls remain the same, since they are for QtCreator internal use.

    You should use the dlls located in the folder where your qmake is found.

    This folder is found by QMAKE_QMAKE variable in .pro files.



  • I would like to avoid copying files from QtCreator\bin and the D3DCompiler_43.dll dependncy seems to be a natural dependency for Qt apps.

    Unfortunately, for Qt 5.1.0, D3DCompiler_43.dll is not shipped in Qt\bin where QMake is found.


  • Moderators

    According to "this":http://www.dll-files.com/dllindex/dll-files.shtml?d3dcompiler_43 the dll is a microsoft compiler dependent dll. It is required for operating Qt creator, but not meant for distribution. You should have the proper version of this dll with your compiler. It is not really part of Qt libs.

    You will require probably more compiler dependent dlls anyway, so you can copy it with the other dlls of the ms compiler.

    As lined out above, it is not a good idea to mix Qt creator bin dlls with the Qt lib bin (where qmake resides) dlls. They might be identical for Qt 5.1.0 SDK, but they should be kept separately. For instance you can also update with the more recent Qt creator 2.8 which is based for some reason on Qt4. Also the compiler could be changed for any reason.



  • I'm using Qt SDK so I would expect that everything is self consistent since it ships the compiler (MinGW 48).

    Only the static .a and .h are included in the MinGW folder:
    c:\Qt\Qt5.1.0\Tools\mingw48_32\i686-w64-mingw32\lib\libd3dcompiler_43.a
    c:\Qt\Qt5.1.0\Tools\mingw48_32\i686-w64-mingw32\include\d3dcompiler.h


  • Moderators

    I am using MinGW Qt5.1 SDK as well. This version has been installed using online installer from download page. However, I do not need to copy D3DCompiler_43.dll when deploying on to other machines.

    OK, here is a reference in the "deployment document for windows":http://qt-project.org/doc/qt-5.0/qtdoc/deployment-windows.html#creating-the-application-package
    [quote]
    If you are using ANGLE (the default) then you additionally need to include both libEGL.dll and libGLESv2.dll from Qt's 'lib' directory as well as the HLSL compiler from DirectX. The HLSL compiler library is called d3dcompiler_XX.dll where XX is the version number that ANGLE (libGLESv2) was linked against.
    [/quote]
    I guess also the other 2 dlls mentioned there are missing for you. There has been another thread on this topic. Apparently, a version compiled against ANGLE is not available. At least on the download page only the SDK with MinGW compiled with openGL is mentioned. For msvc a default version and a version with openGL is mentioned.
    What the reasons are, I do not know.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.