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.
-
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.DLLIs this correct?
-
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?
-
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?
-
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?
-
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>
@ -
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>
@ -
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?
-
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.
-
Can you show your pro file ?
And your Kit settings ?