2010-10-15 5 views
6

Ich habe C-Programm kompiliere ich mit mingw unter Windows. Es funktioniert gut, erfordert aber MSVCRT.DLL. Ich möchte das statisch verknüpfen (wie ich es in Visual Studio tun kann). Ist das möglich?Kann ich MSVCRT statisch mit mingw verbinden?

Ich versuchte -static Flagge zu gcc und es gab keine Änderung.

Was ist mit C++ - Programm unter Verwendung auch Standard-C++ - Bibliothek?

+0

über Ihre letzte Frage ... wenn Sie über STL reden, ist es nur Header-Header. –

+0

@Armen: aber gibt es auch DLL für C++ MSVCPT oder so ähnlich? – zaharpopov

+0

Beachten Sie, dass MSVCRT.DLL als eine Systemkomponente in so ziemlich jeder Windows-Version enthalten ist, mit der Sie normalerweise konfrontiert werden. Insbesondere müssen Sie es nicht mit Ihrer Anwendung verteilen, da Ihre Endbenutzer es bereits haben. Eine natürliche Frage ist dann, warum müssen Sie eine dynamische Verbindung zu ihm vermeiden? – RBerteig

Antwort

7

Ich glaube, dass MinGW nicht die statische Laufzeitbibliothek aus Gründen des Urheberrechts verwendet.

Sie können vielleicht versuchen newlib zu verwenden (http://sourceware.org/newlib/) eine ausführbare Datei zu erstellen, die nicht mit gcc -static -static-libgcc -static-libstdc++ zu msvcrt.dll

+1

+1 für die Urheberrechtsvermeidung. Das ist ein cleverer Nebeneffekt, der bereits auf jedem Windows-System vorhanden ist. Mit MinGW erstellte Programme benötigen es, müssen es aber nie verteilen. Daher keine urheberrechtlichen Probleme. – RBerteig

+1

Auch wenn ich keine Std C Funktionen in Code verwenden, benötigt MSVCRT ich denke für CRT Start/Cleanup-Codes, die vor/nach Main ausgeführt werden. Newlib bietet das auch? – zaharpopov

-2

Link funktioniert Link und Sie werden eine Weile verbracht libgcc_s_dw2-1.dll und libstdc++-6.dll

+0

Eine Antwort wie diese ohne Erklärung zu downbooten ist nicht wirklich hilfreich. Es gibt keinen offensichtlichen Grund, warum diese Antwort fehlerhaft ist. – JBentley

+1

Wie wäre es denn, dies hat keine Auswirkungen auf msvcrt.dll aus den generierten Binärdateien Abhängigkeiten zu entfernen? – paulm

+0

weil es msvcrt.dll noch benötigt – sherpya

0

Nachdem die Suche nicht brauchen Ich selbst stolperte dazu über this post und führte die laufende Mingw32 Alternate C Laufzeitbibliothek ein. Es ist jedoch nicht einsatzbereit, und der Entwickler scheint es aufgegeben zu haben. Home page link here.

Diese Antwort hier zu veröffentlichen in der Hoffnung, dass sie für Leute nützlich sein wird, die irgendwann in der Zukunft googeln.