Warum funktioniert meine *exe nicht auf rechnern, wo kein VC++ 2005 express ist
-
Bei VS 8 gibt es eine neue Einstellung für Manifeste. In der IDE musst du mal bei "Projekteinstellungen\Manifesttool" "Manifest einbetten" auf "Nein" stellen. Somit wird das Manifest nicht in die appname.exe eingebettet. Wenn du dann dein Projekt erstellst, im Ausgabeordner die Manifestdatei (*.manifest) löschst und dann deine *.exe ausführst kommen warscheinlich Fehler, dass eine DLL nicht gefunden wurde. Wenn du mir dann den Namen der *.dll posten würdest, könnte ich mit dem Fehler mehr anfangen.
-
ok also nachdem ich das getan habe kommt folgende fehlermeldung:
Text-Editor.exe hat ein Problem festgestellt und muss beendet werden.
Falls Sie Ihre Arbeit noch nicht gespeichert hatten, können Daten
möglicherweise verloren gegangen sein.NUN: hoffentlich kannst du damit was anfangen!
mfg
-
und nein, es gibt keine fehlermeldung, das er ne ddl nich findet
-
@ Jochen Kalmbach
könntest du mir denn vielleicht erklären wie man was "Statisch linkt"
oder welche dlls denn?
-
Statisch-Linken: Projekt|Peroperties|C/C++|Code-Generation|Runtime: (irgendwas auswählen ohne DLL)
DLLs: CRT:
- msvcr80.dll
- msvcp80.dll
- msvcm80.dll
- Microsoft.VC80.CRT.manifest
-
nun...danke für die liste der dlls..aber das statischlinken geht nicht wenn ich
(egal was)was auswähle ohne dll kommt beim compiliuren folgende fehlermeldung:Fehler 1 Befehlszeile error D8016 : Die Befehlszeilenoptionen /MTd und /clr:pure sind inkompatibel. cl
und ähh was soll ich mit den dlls anfangen??
wenn ich sie in den ornder kopiere, muss ich dem programm doch irgendwie sagen,
das sie sich nun im ordner so und so finden..usw...mfg
-
Ja, statisch Linken geht natürlich nicht, wenn Du /clr verwendest (also .NET). Das geht nur, wenn Du native-WinAPI/MFC/ATL machst.
Wenn Du /clr verwendest, musst Du eh das .NET-Framework auf dem Zeilrechner installieren...
-
oik das is net das problem aber...reicht das denn wirklich aus?
also ich mein brauch ich dafür wirklich nur .NET Framework 2, weil wenn ja, wär das eigentlich kein problem, ich dacht ich müsste noch PSDK und VC++2005 express auf dem zielrechner daraufmachen^^?
-
Wenn Du nur zusätzlich die CRT verwendest und keine MFC/ATL, dann reicht das .NET-Framework aus.
-
demnach brauch ich dann auch nich irgendwelche dlls zu kopieren oder so?
oder?
-
Neun, Du brauchst nur Deine EXE und das .NET-Framework 2.0 ...
-
Hi,
also bei mir haut das absolut nicht hin. Ich kompiliere im Release Modus. Auf dem Zielrechner habe ich sämtliche .net Frameworks installiert, 1.1, 2.0, 3.0. Es kommt immer der Fehler das "die Anwenungskonfiguration" nicht korrekt ist.
Ich bekomme beim kompilieren zwei Dateien "myapp.exe" und in "myapp.resources.dll" die in einem Ordner "de-DE" liegt. Was muss ich nun anstellen um die exe zum laufen zu bringen? Ich habe jetzt schon einige Seiten gefunden auf denen behauptet wird das man Anwendungen die mit einer Express Version erstellt wurden nicht auf anderen Rechnern laufen lassen kann. Stimmt das? Es wäre klasse wenn jemand mal in ein paar einfachen Schritten erklären könnte was man tun muss um die exe überall laufen zu lassen, weil allein mit .net framework installieren ist es auf jeden Fall nicht getan bei mirEDIT:
Die Dateien
- msvcr80.dll
- msvcp80.dll
- msvcm80.dll
- Microsoft.VC80.CRT.manifest
habe ich auch versucht in meinem Anwendungsverzeichnis abzulegen, das bringt aber leider auch nichts. Ich habe übrigens eine reine CLR Windows Forms Anwendung mit VC++2005 erstellt...EDIT2:
vcredist_x86.exe von Microsoft heruntergeladen und auf dem Zielrechner installiert.
Kurzbeschreibung
Mit Microsoft Visual C++ 2005 Redistributable Package (x86) werden Laufzeitkomponenten von Visual C++-Bibliotheken installiert, die erforderlich sind, um Anwendungen, die in Visual C++ entwickelt wurden, auf einem Computer auszuführen, auf dem Visual C++ 2005 nicht installiert ist.Hat leider auch nichts gebracht. Immer noch der Fehler. Was hat der Rechner auf dem ich VC++2005 Express installiert habe was mein Zielrechner (ohne VC++) nicht hat?
-
Wenn Du eine CLR-Anwendung hast musst Du zuerst mal das .NET-Framework Redistributable 2.0 auf dem Zielrechner installieren.
Und dann abhängig von Deinem Service-Pack-Level von VC2005EE entweder das vcredist für das RTM oder das SP1 installieren!
-
.net Framework Redistributable 2.0 habe ich natürlich installiert
(-> http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en)vcredist habe ich auch installiert(->http://www.microsoft.com/downloads/details.aspx?familyid=32BC1BEE-A3F9-4C13-9c99-220B62A191EE&displaylang=de), das hats leider auch nicht gebracht.
Meinst du mit SP1 das .NET Compact Framework 2.0 Service Pack 1 Redistributable
(->http://www.microsoft.com/downloads/details.aspx?familyid=0c1b0a88-59e2-4eba-a70e-4cd851c5fcc4&displaylang=en)? Compact ist doch irgendwas anderes oder meinst du das 1.1 SP1?
-
vcredist für VC2005-SP1 ist:
http://www.microsoft.com/downloads/details.aspx?FamilyID=200B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=en
-
Danke für die Hilfe!
Mit der SP1 Version vom vcredist klappts. Wie bekomme ich es nun hin das in meinen Installer mit reinzupacken? Ich verwende b1gSetup, das installiert das framework 2.0 im Bedarfsfall automatisch mit. vcredist SP1 kann ich da aber leider nicht mit ausführen lassen.
Kann ich irgendwie rausfinden welche Dateien von meinem Programm gebraucht werden, dann kann ich mir die so zusammensuchen und vom Installer halt einzeln in die entsprechenden directorys kopieren lassen, im vcredist sind ja auf jedenfall die Dateien enthalten die ich brauche, da es ja damit jetzt funktioniert.
-
Wenn das b1gSetup Merge-Modules einbinden kann, dann kannst Du einfach die msm, welche bei Deiner VC-Installation dabei sind einbinden.
-
Eine solche Funktion habe ich da leider nicht gefunden. Ich kann nur Dateien und Ordner, Registryeinträge, Dienste und Verknüpfungen anlegen lassen. Kann man nicht irgendwie rauskriegen welche dlls und sonstige dateien benötigt werden und wo die abgelegt werden müssen?
-
Du kannst natürlich auch die CRT DLLs lokal bei Deiner Anwendungen hinterlegen. Dann musst Du aber auch noch das CRT-Manifest dazulegen... Es handelt sich um folgende CRT-DLLs:
- msvcr80.dll / msvcp80.dll / msvcm80.dll
Und das Manifest heisst "Microsoft.VC80.CRT.manifest" und muss folgendes enthalten (für SP1):<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<noInheritable></noInheritable>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.762" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
<file name="msvcr80.dll" hash="10f4cb2831f1e9288a73387a8734a8b604e5beaa" hashalg="SHA1"><asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">dsig:Transforms<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod>dsig:DigestValuen9On8FItNsK/DmT8UQxu6jYDtWQ=</dsig:DigestValue></asmv2:hash></file>
<file name="msvcp80.dll" hash="b2082dfd3009365c5b287448dcb3b4e2158a6d26" hashalg="SHA1"><asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">dsig:Transforms<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod>dsig:DigestValue0KJ/VTwP4OUHx98HlIW2AdW1kuY=</dsig:DigestValue></asmv2:hash></file>
<file name="msvcm80.dll" hash="542490d0fcf8615c46d0ca487033ccaeb3941f0b" hashalg="SHA1"><asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">dsig:Transforms<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod>dsig:DigestValueYJuB+9Os2oxW4mY+2oC/r8lICZE=</dsig:DigestValue></asmv2:hash></file>
</assembly>Diese 4 Dateien musst Du dann nur in das gleiche Verzeichnis wie Deine EXE installieren und dann sollte es (mit installiertem .NET-Framework) gehen.
-
Funktioniert einwandfrei! Genial!