J'ai C Programme I Compilez avec J'ai essayé Qu'en est-il du programme C ++ utilisant également la bibliothèque C ++ standard? P> Mingw code> sous Windows. Cela fonctionne bien mais nécessite
msvcrt.dll code>. Je veux lier cela statiquement (comme je peux faire dans Visual Studio). Est-ce possible? P>
-Static code> drapeau sur
gcc code> et il n'a pas modifié. P>
3 Réponses :
Je crois que Mingw n'utilise pas la bibliothèque d'exécution statique pour des raisons de copyright. p>
Vous pouvez peut-être essayer d'utiliser NewLib ( http://sourceware.org/newlib/ ) pour créer Un exécutable qui ne correspond pas à msvcrt.dll code> p>
+1 pour éviter le droit d'auteur. C'est un effet secondaire intelligent de celui-ci étant déjà sur chaque système Windows. Les programmes construits avec Mingw l'exigent, mais ne doivent jamais la distribuer. Par conséquent, pas de problèmes de copyright.
Même si je n'utilise aucune fonction STD C dans le code, cela nécessite MSVCRT, je pense que les codes de démarrage / nettoyage CRT fonctionnent avant / après. NewLib fournit cela aussi?
Qu'en est-il de Mingw64?
Cela ne répond pas à la question de " Comment éviter de relier avec msvcrt.dll em>", mais si vous êtes ici pour une question plus générale de " comment créer un lien avec Mingw Statiquement em> "...: p>
lien avec gcc -static -static-libgccc -static-libstdc ++ code> et vous n'aurez pas besoin
libgcc_s_dw2-1.dll code> et
libstDC ++ - 6.DLL code> p>
Downvoting Une réponse comme celle-ci sans explication n'est pas vraiment utile. Il n'y a pas de raison évidente pour laquelle cette réponse est défectueuse.
Qu'en est-il de la cause ceci n'a aucun effet de suppression de MSVCRT.DLL à partir des dépendances des fichiers binaires générés?
parce qu'il aura toujours besoin de msvcrt.dll
Après avoir passé un moment à la recherche de cela moi-même, j'ai rencontré Cet article introduisant la bibliothèque d'exécution d'alternative en progrès Publication de cette réponse ici dans l'espoir que cela viendra être utile aux gens de googler à un moment donné à l'avenir. P>
À propos de votre dernière question ... Si vous parlez de STL, c'est seulement en tête d'en-tête.
@Armen: Mais il n'y a-t-il pas non plus de DLL pour C ++ MSVCRT ou quelque chose comme ça?
Notez que msvcrt.dll est incluse en tant que composant système dans presque toutes les versions de Windows que vous êtes généralement susceptibles de rencontrer. En particulier, vous n'avez pas besoin de le distribuer avec votre application car vos utilisateurs finaux l'auront déjà. Une question naturelle est alors pourquoi avez-vous besoin d'éviter une liaison dynamique?
N'oubliez pas non plus que vous pouvez confirmer les DLL en cours d'utilisation avec Walker de dépendance .
Le dernier Mingw, utilisant GCC 4.5, dispose de dépendances de bibliothèque supplémentaires, y compris libgcc_s_dw2-1.dll et LibstDC ++ - 6.DLL. Je n'ai pas été en mesure de les supprimer, et donc je les distribue avec ma demande.