Ok ich hab eine paar Möglichkeit gefunden Programme, die mit VC8 erstellt wurden auf Rechnern auszuführen, wo kein VC8 installiert ist.
Wer die Fehlermeldung "Diese Anwendung konnt nicht gestartet werden, weil die Anwendungskonfiguration nicht korrekt ist" oder "Die benötigte Datei MSVCR80.dll wurde nicht gefunden" kennt, weis was ich meine.
1. Möglichkeit:
einfach das .NET 2.0 Framework installieren. Das is aber die schlechteste Lösung da man meist nur einen kleinen Teil des ganzen Frameworks braucht.
2. Möglichkeit
Man liefert die CRT Datein mit. Das sind folgende Datein:
- Microsoft.VC80.CRT.manifest, bzw Microsoft.VC80.DebugCRT.manifest (Debug-Version)
- msvcm80.dll, bzw msvcm80d.dll
- msvcp80.dll, bzw msvcp80d.dll
- msvcr80.dll, bzw msvcr80d.dll
Diese müssen sich dann im Exe Verzeichnis des Programmes befinden, oder in einem Unterordner namens "Microsoft.VC80.CRT" / "Microsoft.VC80.DebugCRT".
Release
Die Dateien befinden sich hier:
"...\Microsoft Visual Studio 8\VC\redist\x86 (oder amd64, je nach Maschine)\Microsoft.VC80.CRT\*hier sind die datein*"
Falls ihr die MFC oder die ATL benutzt befinden sich die Datein dafür hier:
"...\Microsoft Visual Studio 8\VC\redist\x86 (oder amd64)\Microsoft.VC80.MFC\*hier sind die datein*" und hier
"...\Microsoft Visual Studio 8\VC\redist\x86 (oder amd64)\Microsoft.VC80.ATL\*hier sind die dateien*"
Debug
Die Dateien befinden sich hier:
"...\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86 (oder amd64)\Microsoft.VC80.CRT\*hier sind die datein*"
Falls ihr die MFC benutzt befinden sich die Dateien dafür hier:
"...\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86 (oder amd64)\Microsoft.VC80.MFC\*hier sind die datein*"
für Visual C++ 2005 Express Nutzer
Da die oben genannten Ordner nur ab der Standard Edition vorhanden sind, müsst ihr euch die 3 Dlls selber besorgen und die Manifest selber erstellen.
Hier sind die Dlls:
"C:\WINDOWS\WinSxS\x86(oder amd64)_Microsoft.VC80.CRT_*hier folgt nen langer Code*" - Release
"C:\WINDOWS\WinSxS\x86(oder amd64)_Microsoft.VC80.DebugCRT_*langer Code*" - Debug
So müssen die Manifest-Dateien aussehen:
Release:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright © 1981-2001 Microsoft Corporation-->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<noInheritable/>
<assemblyIdentity
type="win32"
name="Microsoft.VC80.CRT"
version="8.0.50608.0"
processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b"
/>
<file name="msvcr80.dll"/>
<file name="msvcp80.dll"/>
<file name="msvcm80.dll"/>
</assembly>
|
Debug:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright © 1981-2001 Microsoft Corporation -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<noInheritable/>
<assemblyIdentity
type="win32"
name="Microsoft.VC80.DebugCRT"
version="8.0.50608.0"
processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b"
/>
<file name="msvcr80d.dll"/>
<file name="msvcp80d.dll"/>
<file name="msvcm80d.dll"/>
</assembly>
|
3. Möglichkeit
Man linkt die CRT Datein statisch zu seiner exe dazu. Dazu "Project -> Project Properties -> Configuration Properties -> C/C++ -> Code Generation -> Runtime Library von "Multi-Threaded DLL" in "Multi-Threaded" ändern. Das hat den Nachteil, dass man die CRT Datein später nicht manuell updaten kann und bei vielen selbsterstellten Dlls braucht man unnötig viel Speicher, da alle Dlls die CRT statisch linken...
4. Möglichkeit
Man führt auf dem Zielrechner die vcredist_x86.exe aus. Hier findet ihr sie:
"...\Microsoft Visual Studio 8\SDK\v2.0\Bootstrapper\Packages\vcredist_x86 (oder x64, je nach Maschine)\*hier ist die Datei*"