Frage

Ich habe einen Anwendungsbau mit VS2008 SP1A (9.0.30729.4148) unter Windows 7 x64, der nicht unter XP starten möchte.

Die Nachricht ist The application failed to initialize properly (0x80000003). Click on OK to terminate the application.. Ich habe überprüft depends.exe und fand das msvcr90.dll versucht zu laden FlsAlloc Von kernel32.dll - und flSalloc ist erst mit Vista verfügbar. Ich bin sicher, dass es von der Anwendung nicht verwendet wird.

Wie löst ich das Problem?

Das SXS -Paket ist bereits auf der Zielmaschine installiert. Tatsächlich habe ich alle 3 Versionen von 9,0 SXS (Erstveröffentlichung, SP1 und SP1+Sicherheitspatch)

Anwendung wird mit kompiliert _BIND_TO_CURRENT_VCLIBS_VERSION=1

Außerdem habe ich die richtige Ziel -Windows -Version definiert stdafx.h

 #define WINVER 0x0500
 #define _WIN32_WINNT 0x0500

Manifestdatei

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
 <security>
 <requestedPrivileges>
  <requestedExecutionLevel level="asInvoker" uiAccess="false" /> 
  </requestedPrivileges>
  </security>
  </trustInfo>
 <dependency>
 <dependentAssembly>
  <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.4148" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b" /> 
  </dependentAssembly>
  </dependency>
 <dependency>
 <dependentAssembly>
  <assemblyIdentity type="win32" name="Microsoft.VC90.MFC" version="9.0.30729.4148" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b" /> 
  </dependentAssembly>
  </dependency>
</assembly>

Ergebnis von Abhängig

Gestartet "C: Programme app app.exe" (Prozess 0xa0) unter der Adresse 0x00400000. Erfolgreich angesaugtes Modul. Laden "C: Windows System32 ntdll.dll" unter der Adresse 0x7c900000. Erfolgreich angesaugtes Modul. Geladen "C: Windows System32 kernel32.dll" unter der Adresse 0x7c800000. Erfolgreich angesaugtes Modul. Laden "C: Programme App MFC90.dll" unter der Adresse 0x785e0000. Erfolgreich angesaugtes Modul. Laden "C: Programme App msvcr90.dll" unter der Adresse 0x78520000. Erfolgreich angesaugtes Modul. Laden "C: Windows System32 user32.dll" unter der Adresse 0x7e410000. Erfolgreich angesaugtes Modul. Geladen "C: Windows System32 GDI32.dll" unter der Adresse 0x77f10000. Erfolgreich angesaugtes Modul. Laden "C: Windows System32 Shlwapi.dll" unter der Adresse 0x77f60000. Erfolgreich angesaugtes Modul. Laden "C: Windows System32 advapi32.dll" unter der Adresse 0x77dd0000. Erfolgreich angesaugtes Modul. Laden "C: Windows System32 rpcrt4.dll" unter der Adresse 0x77e70000. Erfolgreich angesaugtes Modul. Laden "C: Windows System32 Secur32.dll" unter der Adresse 0x77Fe0000. Erfolgreich angesaugtes Modul. Laden "C: Windows System32 msvcrt.dll" unter der Adresse 0x77c10000. Erfolgreich angesaugtes Modul. Laden "C: Windows System32 comctl32.dll" unter der Adresse 0x5d090000. Erfolgreich angesaugtes Modul. Laden "C: Windows System32 msimg32.dll" unter der Adresse 0x76380000. Erfolgreich angesaugtes Modul. Laden "C: Windows System32 Shell32.dll" unter der Adresse 0x7c9c0000. Erfolgreich angesaugtes Modul. Geladen "C: Windows System32 oleaut32.dll" unter der Adresse 0x77120000. Erfolgreich angesaugtes Modul. Geladen "C: Windows System32 Ole32.dll" unter der Adresse 0x774e0000. Erfolgreich angesaugtes Modul. Einstiegspunkt erreicht. Alle impliziten Module wurden geladen. DllMain (0x78520000, dll_process_attach, 0x0012fd30) in "C: Programme app msvcr90.dll" rief. GetProcaddress (0x7c800000 [C: Windows System32 Kernel32.dll], "flSAlloc") aus "C: Programme app msvcr90.dll" unter der Adresse 0x78543ACC und zurückgegeben und NULL zurückgegeben. Fehler: Die angegebene Prozedur konnte nicht gefunden werden (127). GetProcaddress (0x7c800000 [C: Windows System32 kernel32.dll], "flsgetValue") aufgerufen von "C: Programme app msvcr90.dll" unter der Adresse 0x78543ad9 und zurückgegebene Null. Fehler: Die angegebene Prozedur konnte nicht gefunden werden (127). GetProcaddress (0x7c800000 [C: Windows System32 kernel32.dll], "flSetValue") aufgerufen von "C: Programme app msvcr90.dll" unter der Adresse 0x78543ae6 und zurückgegebene Null. Fehler: Die angegebene Prozedur konnte nicht gefunden werden (127). GetProcaddress (0x7c800000 [C: Windows System32 kernel32.dll], "flsfree") aus "C: Programme app msvcr90.dll" unter der Adresse 0x78543af3 und zurückgegebene Null. Fehler: Die angegebene Prozedur konnte nicht gefunden werden (127).

Ich sollte erwähnen, dass ich Windows SDK 7 als Standard -SDK installiert und konfiguriert habe.

War es hilfreich?

Lösung 2

Manifest Tool ist wirklich fehlerhaft und die einzige zuverlässige Lösung bestand darin, das Manifest nicht in die Binärdateien einzubetten, da ein Einbettung fast zufällig fehlschlägt. Das Manifest draußen zu halten ist hässlich, funktioniert aber zumindest immer.

Andere Tipps

Ich habe das Manifest immer in meine DLLs einbettet und habe noch nie ein Problem gehabt. Ich stieß nur auf ein Problem, als ich vergaß, das Manifest einzubetten. Anschließend findet es nicht die msvcr90.dll unter Windows 2008, funktioniert jedoch in älteren Versionen von Windows, die mich für eine Weile verwirrten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top