Hallo Heinz,
Ich antworte in diesem Fall nicht via PM, sondern direkt hier im Forum, damit andere, welche ähnliche bzw. das selbe Problem haben ggf. davon profitieren können.
Ich konnte nach einigen Problemen dein Programm ausführen - aber alles der Reihe nach...
Gleich nach dem Starten wurde die Fehlermeldung:
Activation context generation failed for "C:\wcm_prog\Memo2005.exe". Dependent Assembly Microsoft.VC80.CRT,processorArchitecture="x86",pub licKeyToken="1fc8b3b9a1e18e3b",type="win32",versio n="8.0.50727.762" could not be found. Please use sxstrace.exe for detailed diagnosis.
ins Eventlog eingetragen.
Eine Suche in Google brachte keine Lösung, nur den Hinweis (auf
http://forums.microsoft.com/MSDN/Sho...20178&SiteID=1), man solle doch folgendes machen:
Copy *80.dll and *80d.dll files in Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86\Microsoft.VC80.Deb ugCRT to someplace where your debug exe can see them.
Das hab ich dann gemacht, also folgende Dateien in das Programmverzeichnis kopiert:
Microsoft.VC80.CRT.manifest
msvcm80.dll
msvcp80.dll
msvcr80.dll
Nach einem weiteren Programmstart wurde nun folgende Fehlermldung ins Eventlog eingetragen:
Activation context generation failed for "C:\wcm_prog\Memo2005.exe".Error in manifest or policy file "C:\wcm_prog\Microsoft.VC80.CRT.MANIFEST" on line 11. Component identity found in manifest does not match the identity of the component requested. Reference is Microsoft.VC80.CRT,processorArchitecture="x86",pub licKeyToken="1fc8b3b9a1e18e3b",type="win32",versio n="8.0.50727.762". Definition is Microsoft.VC80.CRT,processorArchitecture="x86",pub licKeyToken="1fc8b3b9a1e18e3b",type="win32",versio n="8.0.50608.0". Please use sxstrace.exe for detailed diagnosis.
Ursache dafür ist die sog. Side by Side Execution. Um die "Dll Hell" zu lösen bzw. zumindest zu entschärfen,
wurde von MS das Modell entwickelt, dass eine Applikation fix mit einer bestimmten Version einer Dll verbunden werden kann. Das verhindert das Problem, das nach dem Update der Dll durch eine neuere Version plötzlich Programme nicht mehr
funkionieren, weil sich im Code der Dll etwas geändert hat. => Das war die sog. "Dll Hell"
Der Update einer Dll war somit immer potentiell gefährlich, weil man nie wusste, ob bisherige Programme mit der neuen Version der Dll funktionieren - deshalb konnte man nun ein Assembly Manifest erstellen, in welchem festgelegt wurde,
dass das Programm FIX eine bestimmte Version der Dll benötigt. (Man kann auch festlegen, dass automatisch neuere Versionen verwendet werden soll u.a.)
Na jedenfalls hab ich mir's dann einfach gemacht und das Manifest geändert (da ich die angeforderte Version
8.0.50608.0 nicht habe).
Inhalt der geänderten Manifest Datei:
PHP-Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<noInheritable/>
<assemblyIdentity
type="win32"
name="Microsoft.VC80.CRT"
version="8.0.50727.762"
processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b"
/>
<file name="msvcr80.dll"/>
<file name="msvcp80.dll"/>
<file name="msvcm80.dll"/>
</assembly>
Ich hab also nur den Einrag von
version="8.0.50608.0"
auf
version="8.0.50727.762"
geändert.
Nach den Start des Programmes wird eine MessageBox mit der Meldung:
"Morgen am 12.3.2007: Test."
ausgegeben.
hoffe, das hilft dir + fg
Hannes