Warum funktioniert meine *exe nicht auf rechnern, wo kein VC++ 2005 express ist
-
hi lkeute,
also folgendes problem:
ich hab VC++ 2005 express, PSDK, .NET Framework2 usw..komplette ausstattung...
alles was microsoft zu bieten hatso weit so gut:
nachdem compilieren des projektes, kann man das programm ja starten, indem man die
"meinedatei.exe" öffnet...bei funktionerts aber...wenn ich das Prog z.B. auf einem Rechner starten will, wo kein visualC++ drauf ist kein PSDK und nur .NET Framework 1.1, achjqa und kein servicepack 2,(wobei das wahrscheinlich egal ist, weil es bei meinem freund auch nicht funktioniert hat obwohl er sp2 und alle updates hat...->
jedoch hat er kein PSDK, kein VC++ 2005 express ,)es nicht funktioniert!Fehlermeldung:
Die Anwendung muss neu installiert werden(hä kp, )
, weil die Anwendungsdatei fehlerhaft ist ( ) ..wär cool wenn mir das ma einer erklären könnte !
weil wenn meine befürchtung stimmt, muss man, wenn man das selbst gemachte programm benutzten will, .NET Framework2 haben...oder vielleicht soger PSDK?
mfg
Foxx90
-
Hi,
schau mal bei den Links in dem Thread nach. Sollte dir helfen, wenn nicht, einfach noch mal melden.
[quote=Foxx90]
weil wenn meine befürchtung stimmt, muss man, wenn man das selbst gemachte programm benutzten will, .NET Framework2 haben...oder vielleicht soger PSDK?
[/quote]
Natürlich benötigst du die .NET Framework klassenbibliothek auf dem Zielrechner, wenn du .NET Programme schreibst. PSDK wird glaube ich aber nich benötigt.
-
nun...anscheinend hast du ja das problem in den griff bekommen..
könnteste mir das mal genauer erklären wie du das mit den dlls gemacht hasT, da ich das selbe problem habe wie du es hattets?
und: braucht man .NET Framework 2.0?mfg
-
achja und...ehrlich gesagt fänd ich es irgnedwie ziemlich umständlich und ähh *doof* wenn man für ne simple window anwendung einen haufen an dlls installieren muss oder womöglich noch .NET Framework 2.0...
-
Ähm, wenn Du .NET Anwendungen programmierst, brauchst Du natürlich auf jeder Zielplattform das Framework. Achja, logischerweise in der Version mit der Du es programmiert hast.
Wenn Du das nicht willst, programmiere kein .NET, es gibt für Windows genug freie Compiler mit denen Du mit WinAPI (C) oder diversen C++-Frameworks (wxWidgets, QT) rumspielen kannst
-
Wenn Du eine native Win32-Applikation hast, ist es am einfachsten, wenn Du statisch linkst! Dann musst Du nämlich gar nichts mitgeben und hast alle Probleme beseitigt!
Wenn Du unbedingt gegen die CRT/MFC/ATL-DLL linken willst, dann musst Du nur die DLLs in Deinem App-Verzeichnis mitgeben und das passende Manifest dazu.
Es ist alles so wie bisher auch (also wie in VC6-VC2002/2003), nur das Manifest ist dazugekommen.
-
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