Abhängigkeiten von Visual Studio

Gast #6113756
Lesenswert?

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?
#6114849
Lesenswert?

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.
#6114852
Lesenswert?

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.
Gast #6122835
Lesenswert?

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.
Gast #6122850
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren