Gibt es VC++ Runtime Komponenten
-
RHBaum schrieb:
Bei dynamisch, musst die dll mitgeben, sonst laeufts ned ... ich glaub bei XP ist aber eine dabei oder ???
Bei Windows sind immer nur die Release-Versionen der Laufzeitbibliotheken dabei. Bei einem Debug-Build muss man also immer die DLLs mitgeben.
Und bitte, bitte nicht die Debug-MFC statisch linken...

-
Und bitte, bitte nicht die Debug-MFC statisch linken...
Was spricht denn dagegen die Debug-Version statisch zu linken ?
-
fiffi schrieb:
Was spricht denn dagegen die Debug-Version statisch zu linken ?
Die Größe und die Sinnlosigkeit.
Warum soll ich eine große Bibliothek einschließlich der sehr umfangreichen Debuginformationen fest an mein Programm hängen, wenn dieselbe Bibliothek als Releaseversion in Form einer DLL praktisch überall verfügbar ist?
-
Hm, soweit so gut,
wie kann ich das Problem jetzt lösen, ohne alles in ein neues Projekt zu schreiben.
CU

-
wie kann ich das Problem jetzt lösen, ohne alles in ein neues Projekt zu schreiben.
Evtl. kannst du ja den Visual Studio Installer benutzen:
http://msdn.microsoft.com/vstudio/downloads/tools/vsi11/default.aspxIch habe ihn noch nie getestet. Ich verwende NSIS:
http://nsis.sourceforge.net/site/index.php
-
Marco230482_ohne_cookie schrieb:
wie kann ich das Problem jetzt lösen, ohne alles in ein neues Projekt zu schreiben.
Erstell einen Release-Build.
-
Guten morgen,
nachdem ich eine Nacht drüber geschlafen habe ist mir noch eine Idee gekommen.
Ich probiere ich die 2 Links mal aus und dann werde ich versuchen, die fehlenden DLL Dateien einfach ins System-Verzeichnis zu kopieren. Wenn das klappen sollte dann bastel ich mir eine BATCH-Datei und lege die DLL's dabei.Danke für eure Hilfe
CU

-
Marco230482_ohne_Cookie schrieb:
Ich probiere ich die 2 Links mal aus und dann werde ich versuchen, die fehlenden DLL Dateien einfach ins System-Verzeichnis zu kopieren.
Versuch doch erst mal, einen Release-Build zu erstellen. Mit hoher Wahrscheinlichkeit gibt's dann gar keine fehlenden DLLs.
Manchmal hat man das Gefühl, vor eine Wand zu reden...
-
Übrigens verstößt du gegen deine Lizenz von MS wenn du die Debug Version der MFC weitergibst. Auserdem was soll der Quatsch das man die Debug Version benutzen möchte. Das macht ja wohl das Programm größer und langsamer.
Ein Tip Erstellen > Aktive Konfiguration dann Release auswählen.
Und blos nicht in den Projekt Einstelungen was verändern.Die MFC in der Release Version liegt auf fast jedem Windows ab Win 98.
@MFK: da kannste von ausgehen, diese Frage wird doch alle 3 Tage hier gestellt. Siehe http://www.c-plusplus.net/forum/viewtopic.php?t=51763
-
MFK schrieb:
fiffi schrieb:
Was spricht denn dagegen die Debug-Version statisch zu linken ?
Die Größe und die Sinnlosigkeit.
Warum soll ich eine große Bibliothek einschließlich der sehr umfangreichen Debuginformationen fest an mein Programm hängen, wenn dieselbe Bibliothek als Releaseversion in Form einer DLL praktisch überall verfügbar ist?
aber wenn andere programme die gleichen dlls nutzen bzw neuere mitbringen ist der effekt hinüber, oder?
-
@All
Ich würde jetzt mal gerne einen vernüftigen Grund hören, warum man überhaupt eine Debugversion statisch linken will bzw. warum man daraus keine Release machen soll???? Irgendwie verstehe ich das hier nicht. Es ist doch überaus praktisch (bei VC++ 6.0) ein Release zu machen, weil die DLL´s sowieso, schon wie gesagt, ab W98 vorhanden sind???

Wenn man VC++ 7 verwendet muss man sowieso ein Release statisch linken. Weil man dieses Prog sonst nirgends nutzen kann ausser auf Maschinen auf denen schon die neuen Bibliotheken vorhanden ist.Also irgendwie will mir das nicht so ganz in die Birne warum herumgetüftelt wird, wie man DLL´s ins Windows kopiert nur damit die Debug Version läuft.

Wenn mir das mal jemand freundlicherweise Erklären könnte?

Hellsgore
-
kruser schrieb:
aber wenn andere programme die gleichen dlls nutzen bzw neuere mitbringen ist der effekt hinüber, oder?
Ich weiß nicht genau, welchen "Effekt" du meinst, aber wenn andere Programme die gleiche DLL nutzen, dann ist das gut so, denn dafür sind DLLs da.
Unterschiedliche MFC-DLL-Versionen sind ein Problem, allerdings eins, das recht selten ist. Und ich möchte wetten, dass in der Vielzahl der Fälle, bei denen hier das statische Linken als "Lösung" empfohlen wird, keine Versionsprobleme auftreten würden.
Und wenn dann doch einmal ein Versionsproblem vorliegt, dann muss man halt ein Update anbieten. Es ist ja nicht so, dass Microsoft die MFC-Updates im Monatstakt rausgibt.
Wenn es denn gar nicht anders geht, kann man immer noch die Release-MFC statisch linken. Aber es gibt überhaupt keinen Grund, die Debug-MFC statisch zu linken.
-
Noch eine Lösung wäre, wenn man seine MFC sicher ablegen möchte, dies einfach in das eigene Programmverzeichniss abzulegen. Dort wird ja wohl als erstes gesucht.
Ich denke es schwirren im Internet, wie auch hier, immer mal wieder Holzhammer Methoden rum um dieses "Problem" zu lösen.
Ist die MFC eigentlich schneller wenn sie statisch gelinkt wird ? Ich mein natürlich nur die Release Version.
-
Ihr habt mich falsch verstanden. Ich will nichts weitergeben, verkaufen, verschenken oder sonst irgendwas.
Ich muss das Programm auf einer Workstation im Hörsaal starten (wegen Beamer und Verteidigung...), auf der aber kein VC++ installiert ist. Also muss ich die Debug-Version nehmen. Und dann kommen die Fehlermeldungen.
Mehr nicht.
CU

-
Marco230482_ohne_Cookie schrieb:
Ich muss das Programm auf einer Workstation im Hörsaal starten (wegen Beamer und Verteidigung...), auf der aber kein VC++ installiert ist. Also muss ich die Debug-Version nehmen.
Wie kommst du denn darauf? Die Schlussfolgerung musst du mir erklären.
Die Debugversion "musst" du nur nehmen, wenn du das Programm debuggen willst. Willst du das auf dieser Workstation?
-
Ne wenn ich das Projekt neu erstelle, dann befindet sich im Ordner Debug unter anderem eine EXE Datei.
Mit der startet man das kompilierte Programm. Das klappt ganz gut, wenn VC++ auf dem Computer installiert ist, auf dem ich das Projekt starte.
Wenn kein VC++ installiert, kann man die EXE nicht starten, dann kommen die Fehler mit den fehlenden DLL-Dateien.
So habe ich das bis jetzt immer gemacht. War vermutlich falsch.
Gibts irgendwo ne Anleitung, wie man eine normale ausführbare Datei aus seinem Projekt erstellt?
CU

-
Marco230482_ohne_Cookie schrieb:
Gibts irgendwo ne Anleitung, wie man eine normale ausführbare Datei aus seinem Projekt erstellt?
HeikoKortlang hat in diesem Thread bereits beschrieben, wie man einen Release-Build erstellt...
-
OK, dann werde mich mal damit mein Glück versuchen.
Danke allen.
CU

-
Unterschiedliche MFC-DLL-Versionen sind ein Problem
Noe ! Jedes Programm was den Anspruch erhebt, ernst genommen zu werden, bringt nen Setup mit, sobald nur irgendetwas dynamisch gelinkt wird. Da alle Dlls abwaertskompatibel sein (sollten), ist das kein thema ... installieren, und bei bedarf wird die neue dll druebergepumpt.
Zum weiterreceischen an freunde auf den 2. Rechner etc ist das natuerlich overhaed. Aber wenn man mit nem VC++ 7 compiler ne exe erstellt, sollt man wissen, das man die mfc.dll dann auch an den rechner mit vc++ 6.0 oder ganz ohne VS geben sollte ...
Und blos nicht in den Projekt Einstelungen was verändern.

5 minuten nach dem erstellen eines Projektes mit dem VC++ 6.0 ist nix mehr so wie vorher !!!

die Temp-verzeichnisse liegen doof.
Warum sieht man nem binary ned an, wie es compiliert wurde !
*.dbg.exe, *.exe *.U.dbg.exe *.U.exe helfen echt enorm ...
das selbe mit dll lib etc ...
warum kommen die nicht gleich in nen /bin verzeichniss ???Ciao ...
-
Macht mich doch nicht fertig.
Was kann ich denn nun machen, bzw. was ist besser:
DLL's manuell ins System-verzeichnis kopieren oder eine Release-Version erstellen.
Bitte auf normal deutsch und für solche, die erst seit 2 Jahren C++ Programmieren.
CU
