Abhängigkeiten von Visual Studio

Gast #6113756
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.