Forum: PC-Programmierung Abhängigkeiten von Visual Studio


von Dll (Gast)


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?

von Kaj (Gast)


Lesenswert?

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.

von Oliver S. (oliverso)


Lesenswert?

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

von Vlad T. (vlad_tepesch)


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.

von Vlad T. (vlad_tepesch)


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.

von guest (Gast)


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.

von Oliver S. (oliverso)


Lesenswert?

Warum sollte man Debug-Builds eines Programms für Rechner verteilen 
wollen, auf denen kein Visual Studio installiert ist?

Oliver

von guest (Gast)


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.

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
Noch kein Account? Hier anmelden.