Problems with side by side dependencies with Qt 5.2.0 64bit on Windows 7



  • I am using Qt 5.2 vs2012 opengl x64 on Windows 7. I can build my project but it will not run due to side by side error related to .common-controls_6595b64144ccf1df conflicting between the x86 and amd64 versions.

    Can anyone suggest how to overcome this and make it run?

    Thank you.


  • Lifetime Qt Champion

    Hi,

    Are you mixing 32bit and 64bit compilers ? Libraries ?



  • Thanks for your reply.

    I am using Creator to build the project, Qt libraries as installed and my own source code which is compile according to the default Qt settings for 64bit. As far as I know I am not using any 32bit libraries. It is something I am looking for but I can't see where they might come from.

    Thanks again.



  • After checking my executable with the dependency walker it seems that the following Qt modules which were installed by
    qt-windows-opensource-5.2.0-msvc2012_opengl-x86_64-offline.exe
    are all build for x86 architecure
    ICUDT49.DLL
    ICUIN49.DLL
    ICUUC49.DLL
    QT5CORED.DLL
    QT5GUID.DLL
    QT5OPENGLD.DLL
    QT5PRINTSUPPORTD.DLL
    QT5WIDGETSD.DLL

    Is this correct?


  • Moderators

    Hi,

    That doesn't look right. qt-windows-opensource-5.2.0-msvc2012_opengl-x86_64-offline.exe should contain ICU*51.dll, not ICU*49.dll.

    Do you have older versions of Qt in your system?



  • yes I do have older versions of Qt installed.



  • There must be something wrong with my 5.2 installation. I am going to reinstall this version and try again to see what happens.


  • Moderators

    I'm guessing your project has been configured to use an older version of Qt.

    Uninstall the old Qt if you don't need it anymore -- Qt 5.2 is fully backwards compatible

    Go to your project directory and delete your .pro.user file. That will clear all the old configurations. You will be given the chance to select Qt 5.2 when you reopen your project.



  • OK thank you JKSH for your suggestions. I cleared out the old versions and reinstalled 5.2 just to be sure. I built my project with no problems and I am getting the correct 64 bit Qt libraries linked. However I still get the side by side error and the application will not run.

    Is there anything else should do to fix this?


  • Moderators

    I haven't seen this error before so I'm not sure, sorry. I'll try my best though.

    First, can you please post the exact error message?


  • Lifetime Qt Champion

    You are trying to deploy a debug version of your software. Microsoft doesn't allow it's debug runtime to be distributed



  • Thanks for taking an interest in my problem.

    SGaist. I get the same problem with the release version and I am running it from QtCreator.

    JKSH. I have attached the event log for the error below. I think it is something very specific to this applications code because the MDI example and another application of mine run OK.
    Any pointers as to what I should look for in my code that might cause this will be very helpful.

    @
    ログの名前: Application
    ソース: SideBySide
    日付: 2014/01/27 6:43:21
    イベント ID: 80
    タスクのカテゴリ: なし
    レベル: エラー
    キーワード: クラシック
    ユーザー: N/A
    コンピューター: ken-HP
    説明:
    "C:\Users\ken\Documents\QTProjects\build-MYAPP-Desktop_Qt_5_2_0_MSVC2012_OpenGL_64bit-Release\release\MYAPP.exe" のアクティブ化コンテキストの生成に失敗しました。マニフェストまたはポリシー ファイル "" 行 のエラーです。 アプリケーションで必要なコンポーネントのバージョンが、既にアクティブな別のコンポーネントのバージョンと競合しています。 競合しているコンポーネントは次のとおりです: コンポーネント 1: C:\Windows\WinSxS\manifests\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_41e6975e2bd6f2b2.manifest コンポーネント 2: C:\Windows\WinSxS\manifests\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_fa396087175ac9ac.manifest
    イベント XML:
    <Event >
    <System>
    <Provider Name="SideBySide" />
    <EventID Qualifiers="49409">80</EventID>
    <Level>2</Level>
    <Task>0</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2014-01-26T21:43:21.000000000Z" />
    <EventRecordID>79461</EventRecordID>
    <Channel>Application</Channel>
    <Computer>ken-HP</Computer>
    <Security />
    </System>
    <EventData>
    <Data>C:\Windows\WinSxS\manifests\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_41e6975e2bd6f2b2.manifest</Data>
    <Data>C:\Windows\WinSxS\manifests\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_fa396087175ac9ac.manifest</Data>
    <Data>
    ....
    </Data>
    <Data>C:\Users\ken\Documents\QTProjects\build-MYAPP-Desktop_Qt_5_2_0_MSVC2012_OpenGL_64bit-Release\release\RealCAD.exe</Data>
    <Data>
    ...
    </Data>
    </EventData>
    </Event>
    @


  • Lifetime Qt Champion

    It seems you are mixing x86 and x86_64 libraries



  • Yes probably, but the question is where... I can't see why it is happening.
    The only issues I see in the dependencies is some stuff low down in the Qt print support module which seems to have some Windows 8 RT dependencies. I don't call those directly and certainly not when the app first starts up. I can see no other traces of 32 bit libraries at the moment.



  • Hello again, As you can see below the x86 dependency thing is written in the manifest for the app.

    Is this normal? if not where is it coming from? the qmake.conf file for this platform only has an asterisk for the platform architecture. Where does the second entry in the manifest come from and why?

    @
    <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
    <assembly manifestVersion='1.0'>
    <trustInfo >
    <security>
    <requestedPrivileges>
    <requestedExecutionLevel level='asInvoker' uiAccess='false' />
    </requestedPrivileges>
    </security>
    </trustInfo>
    <dependency>
    <dependentAssembly>
    <assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='' processorArchitecture='' />
    </dependentAssembly>
    </dependency>
    <dependency>
    <dependentAssembly>
    <assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*' />
    </dependentAssembly>
    </dependency>
    </assembly>
    @


  • Lifetime Qt Champion

    You should double check all Kits/Qt versions in Qt Creator, you seem to have a mix between an old (probably x86) and newer Qt



  • Well, I found that if I change the manifest assembly information in the exe to be amd64 the app will run.

    So the issue is why does the x86 thing get into the manifest file? Can someone explain how that is done in Qt. Is it coming from the config file for this platform?


  • Moderators

    The manifest is generated by Visual Studio, not Qt. You may need to check your Visual Studio settings.

    Try asking at http://social.msdn.microsoft.com/Forums/ for clues.



  • I don't use VS directly I build through Qt Creator so I guess it is telling VS to do through the make files?


  • Lifetime Qt Champion

    Can you show your pro file ?
    And your Kit settings ?



  • My Pro file looks like this. I can't show you the actual file names so I have removed them.
    How can I best show you the kit settings that you want to see?
    @
    QT += core gui widgets svg xml opengl printsupport

    TARGET = MyApp
    TEMPLATE = app

    RESOURCES += MyApp.qrc

    the application icon for Windows

    win32 {
    RC_FILE += MyApp.rc
    }

    the application icon for the Mac

    macx {
    ICON = MyApp.icns
    }

    SOURCES +=
    my sources here
    ...
    ...

    HEADERS +=
    my headers here
    ...
    ...

    OTHER_FILES +=
    MyApp.pro.user

    FORMS +=
    my forms here
    ...

    @



  • OK guys, I have an update on this issue. Basically I have stopped the linker making a manifest for now. This enables me to run the application and get on with developing it. I will sort out the manifest issue later when I want to actually deploy it.

    What I don't yet understand is why the x86 dependency appears in the manifest. I am assuming there is something in one of the headers that triggers it but I might be wrong. I will keep looking into this.

    For the moment I am not seeing any x36 dependencies when I look at the executable with the dependency walker. However, I do get the dependency appearing in the manifest if I turn it on.

    If anyone has any idea what is going on here please let me know.

    Thanks to all for your interest in my issue, I much appreciate it.


  • Lifetime Qt Champion

    One thing is puzzling me, why do you MyApp.pro.user in OTHER_FILES ?



  • Good point. I did not put it in there myself I think it was put in there by Qt Creator at some point in time so I assumed it is a required thing.

    Should I remove it?


  • Lifetime Qt Champion

    This file is generated by Qt Creator with the settings you are using for the project and can change from one version to another so unless you start fiddling with it manually you should remove that line from your pro file.

    If you are using a version control system like git, don't commit it there as other user will end up using your settings rather than generating their own.



  • OK, thank you for the advice I will remove it.

    Do you have any idea why I might be getting the x86 dependency in the manifest? Here is the manifest that is created. I know the first dependency is added by the Qt config for this platform but I don't understand why the x86 one is also included.

    @
    <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
    <assembly manifestVersion='1.0'>
    <trustInfo >
    <security>
    <requestedPrivileges>
    <requestedExecutionLevel level='asInvoker' uiAccess='false' />
    </requestedPrivileges>
    </security>
    </trustInfo>
    <dependency>
    <dependentAssembly>
    <assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='' processorArchitecture='' />
    </dependentAssembly>
    </dependency>
    <dependency>
    <dependentAssembly>
    <assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*' />
    </dependentAssembly>
    </dependency>
    </assembly>
    @


  • Lifetime Qt Champion

    On that one, I don't know, sorry



  • Thanks anyway. please post back if you here of anything that might relevant.


Log in to reply
 

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