Problems with side by side dependencies with Qt 5.2.0 64bit on Windows 7
-
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.
-
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.
-
I don't use VS directly I build through Qt Creator so I guess it is telling VS to do through the make files?
-
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 printsupportTARGET = MyApp
TEMPLATE = appRESOURCES += 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.userFORMS +=
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.
-
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?
-
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.