Moin, ich kompiliere mein Programm mit CMake und Visual Studio. Ich möchte es gerne statisch linken, es scheitert aber an einem Wulst von Fehlermeldungen. Nur das dynamische Linken funktioniert. Das Programm kann ich dann auf meinem Rechner ausführen. Aber auf jedem Rechner, auf dem Visual Studio nicht installiert ist, kann das Programm nicht ausgeführt werden, da endlos viele DLLs fehlen. Alle DLLs aus dem Build Ordner kopiere ich natürlich mit. Das kann doch nicht Sinn der Sache sein, dass jeder Visual Studio installieren muss? Wie kann ich diesen Umstand beheben?
Was du suchst heißt: Visual C++ Redistributable for Visual Studio https://www.microsoft.com/en-us/download/details.aspx?id=48145 Wenn das (zu deiner Visual Studio Version gehörende) Redistributable installiert ist, läuft das auch.
Wobei man das theoretisch auch statisch in die Applikation linken kann. Insofern wäre etwas mehr Info zu Dll schrieb: > Ich möchte es > gerne statisch linken, es scheitert aber an einem Wulst von > Fehlermeldungen. hilfreich. Oliver
Oliver S. schrieb: > Wobei man das theoretisch auch statisch in die Applikation linken kann. > Insofern wäre etwas mehr Info zu nicht nur theoretisch. Vorausgesetzt es geht um C/C++: in den Projektsettings unter C/C++ - Codegenerierung musst du die entsprechende Runtime Library auswahlen. Für Debug-Konfigurationen nimmst du multi-threaded Debug /MTd und für release multi-threaded /MT Bei allen anderen, nicht direkt vom Studio kommenden abhängigkeiten musst du natürlich selbst für statisch gelinkte libs sorgen und die unter linker eintragen.
Dll schrieb: > Das kann doch nicht Sinn der Sache sein, dass jeder Visual Studio > installieren muss? Es ist aber durchaus sinnvoll nicht-statisch zu linkten und stattdessen die redistributables mitzuverteilen. So können diese Sicherheitsupdates erfahren, ohne dass man darauf angewiesen ist, dass der Programmautor, der sein Projekt vielleicht schon aufgegeben hat, das Programm neu baut und released.
Vlad T. schrieb: > die redistributables mitzuverteilen Die helfen aber auch nur bei "Release" Builds. Die Debugversionen der Runtime-Dlls sind da nicht drin. Theoretisch könnte man letztere auch manuell zusammenklauben und mitliefern, allerdings würde man damit gegen die Lizenzbedingungen von MS verstoßen.
Warum sollte man Debug-Builds eines Programms für Rechner verteilen wollen, auf denen kein Visual Studio installiert ist? Oliver
Oliver S. schrieb: > Warum sollte man Debug-Builds eines Programms für Rechner verteilen > wollen, auf denen kein Visual Studio installiert ist? Es gibt ein paar spezielle Fälle, wo man es braucht. Normalerweise sollte man so etwas aber natürllich nicht tun. Mein Post war auch mehr als Hinweis an den OP gedacht, das er eventuell versucht hat ein Debugbuild zu verteilen statt der Release Version. Das führt dann genau zu folgendem Ergebnis: Dll schrieb: > Aber auf jedem Rechner, auf dem Visual Studio > nicht installiert ist, kann das Programm nicht ausgeführt werden, da > endlos viele DLLs fehlen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.