2016-09-28 1 views
1

Ich habe ein MFC-Projekt in MSVS 2010. Wenn ich es kompilieren, erzeugt MSVS Manifest-Datei, die die folgenden Zeilen enthält:Warum hängt das MSVS 2010 MFC-Projekt von vcredist_x86.exe für MSVS 2008 ab?

<assemblyIdentity publicKeyToken="1fc8b3b9a1e18e3b" 
    processorArchitecture="x86" version="9.0.21022.8" 
    name="Microsoft.VC90.CRT" type="win32"/> 

Als Ergebnis erhalte ich eine Binärdatei, die für MSVS sowohl vcredist_x86.exe hängt 2008 und vcredist_x86.exe für MSVS 2010, obwohl es tatsächlich nur vcredist_x86.exe für MSVS 2010 verwendet!

Ich habe versucht, Manifest-Generierung in Projekteigenschaften zu deaktivieren. Danach begann meine App mit nur vcredist_x86.exe für MSVS 2010 zu arbeiten. Aber einige Kontrollen (besonders Comboboxen) brachen und begannen falsch angezeigt zu werden. Ich denke, dies geschieht, weil Windows nicht die folgenden Informationen haben aus offensichtlichen mehr:

<assemblyIdentity language="*" publicKeyToken="6595b64144ccf1df" 
    processorArchitecture="x86" version="6.0.0.0" 
    name="Microsoft.Windows.Common-Controls" type="win32"/> 
  1. Warum MSVS eine falsche Version von CRT in der Manifest-Datei schreiben?
  2. Wie behebt man das Problem/make MSVS schreibe die richtige Version von CRT in der Manifest-Datei?

ich es herausgefunden. Ich hatte einen Verweis auf libcurl.lib, die einen Verweis auf openssl libs hatte, die in MSVS 2008 kompiliert wurden ... Nach dem Neuaufbau von libcurl mit den richtigen Versionen von openssl verschwand der Verweis auf crt 9.0 aus der Manifestdatei.

+0

Ich bin mir nicht sicher, aber ich erinnere mich an so etwas damals. Haben Sie das Service Pack 1 angewendet? – lakeweb

+0

Sie sollten eine kurze Antwort schreiben und akzeptieren, anstatt die Antwort in Ihre Frage zu bearbeiten. So können zukünftige Besucher leichter erkennen, dass eine Frage beantwortet wurde. – IInspectable

Antwort

0

Wahrscheinlich geschieht dies aufgrund des Plattform-Toolsets in Projekteigenschaften.

Ändern Sie es in v100 (ich nehme an, jetzt ist es auf V90 gesetzt), aktivieren Sie die Manifestgenerierung und Einbettung (Manifest Tool \ Input and Output) und erstellen Sie Ihr Projekt neu.

+0

Nein, es ist auf v100 eingestellt! –

+0

Überprüfen Sie Quellen, wenn sie eine # pragma-Direktive in Bezug auf "Manifestabhängigkeit" enthalten – GeorgeT

+0

stdafx.h enthält: #pragma Kommentar (Linker, "/ Manifestabhängigkeit: \" type = 'Win32' Name = 'Microsoft.Windows.Common-Controls' Version = '6.0.0.0' processorArchitecture = 'x86' publicKeyToken = '6595b64144ccf1df' language = '*' \ "") Keine weiteren Einträge von "manifestdependency". –

Verwandte Themen