Je crois qu'il s'agit d'un problème de compilateur MinGW / gcc, plutôt que d'une configuration Microsoft Visual Studio.
Le libgcc_s_dw2-1.dll
devrait être dans le répertoire bin du compilateur. Vous pouvez ajouter ce répertoire à votre variable d'environnement PATH pour la liaison d'exécution, ou vous pouvez éviter le problème en ajoutant "-static-libgcc -static-libstdc ++" aux indicateurs de votre compilateur.
Si vous envisagez de distribuer l'exécutable, ce dernier est probablement le plus logique. Si vous prévoyez de l'exécuter uniquement sur votre propre machine, la modification de la variable d'environnement PATH est une option intéressante (réduit la taille de l'exécutable).
Actualisé:
Sur la base des commentaires de Greg Treleaven (voir les commentaires ci-dessous), j'ajoute des liens vers:
[Capture d'écran de Code :: Blocks "Options de construction du projet"]
[Options de lien GNU gcc]
Cette dernière discussion comprend -static-libgcc
et les -static-libstdc++
options de l'éditeur de liens.
Dans Eclipse, vous le trouverez sous les propriétés du projet> C / C ++ Build> Settings> MinGW C ++ Linker> Misc
Vous devez l'ajouter aux "indicateurs de l'éditeur de liens" en haut; nulle part ailleurs. Ensuite, reconstruisez simplement.
J'ai constaté que la liaison de ceux-ci explose statiquement la taille jusqu'à 1400 Ko, même avec des optimisations. C'est 277 Ko plus gros que la simple copie des DLL partagées. Il est également 388kb plus grand après tout UPXing. Très perdre / perdre ici. Incluez simplement les DLL car l'utilisateur final peut décider de les supprimer ou non s'il les a installées ailleurs.
la source
Code :: Blocks: ajoutez '-static' dans settings-> compilateur-> Linker settings-> Other linker options.
la source
Trouvez cette dll sur votre PC et copiez-la dans le même répertoire que votre exécutable.
la source
Voir aussi . Cela a résolu mon problème.
Au fait, est-ce vraiment un
compiler
drapeau? Peutlinker
- être le terme le plus approprié ici?la source
Copiez "libgcc_s_dw2-1.dll" à l'endroit où make.exe est. (Si vous utilisez Msys, copiez-le dans \ msys \ bin) Assurez-vous que le chemin d'accès à make.exe est défini dans l'environnement env. PATH (si make.exe est dans un dossier "bin", très probablement, et que vous avez msys, c'est \ msys \ bin) Compilez, rund, debug, etc. heureux.
la source
Accédez à l'arborescence MinGW http sourceforge.net. Sous Accueil / MinGW / Base / gcc / Version4 (ou quelle que soit la version utilisée) / gcc-4 (version) / vous trouverez un fichier comme gcc-core-4.8.1-4-mingw32-dll.tar.lzma . Extrayez-le et allez dans le dossier bin où vous trouverez votre libgcc_s_dw2-1.dll et d'autres dll. Copiez et collez ce dont vous avez besoin dans votre répertoire bin.
la source
J'ai pu surmonter cela en utilisant "gcc" au lieu de "g ++" pour mon compilateur. Je sais que ce n'est pas une option pour la plupart des gens, mais j'ai pensé que je le mentionnerais comme solution de contournement :)
la source
Ne pouvez-vous pas le mettre dans system32 ou quelque chose comme vous le faites avec d'autres fichiers dll, de sorte que chaque programme que vous essayez d'exécuter n'aura pas ce problème sur votre machine?
J'ai juste besoin du chemin où le mettre.
C'est un peu ennuyeux de le mettre dans le répertoire chaque fois que je lance un programme que je viens de créer ...
Edit: j'ai trouvé la solution:
la source
Allez simplement dans Paramètres >> Compilateur et débogueur, puis cliquez sur l'onglet Paramètres de l'éditeur de liens et passez au contrôle d'édition "Autres options de l'éditeur de liens" et collez-y: "-static-libgcc -static-libstdc ++", il n'y a pas d'option d'indicateur du compilateur dans les options des indicateurs du compilateur pour Code :: Blocks, donc c'est la façon de résoudre ce problème, je suis également venu ici à la recherche d'une solution et le seul gars qui a posté à propos de "-static-libgcc -static-libstdc ++" a donné la bonne idée, et J'ai en quelque sorte compris le reste par accident, mais cela a fonctionné, le fichier est maintenant cliquable depuis l'extérieur de Code :: Blocks, fonctionne directement depuis le bureau.
la source
Ajoutez le chemin d'accès à cette dll dans la variable d'environnement PATH.
la source
L'inclusion de -static-libgcc sur la ligne de compilation résout le problème
Selon: @hardmath
Vous pouvez également, créer un alias sur votre profil [.profile] si vous êtes sur MSYS2 par exemple
Maintenant, votre commande GCC passe aussi par là ;-)
la source
Ajouter "-static" aux autres options de l'éditeur de liens résout ce problème. J'avais juste le même problème après avoir testé cela sur un autre système, mais pas sur le mien, donc même si vous ne l'avez pas remarqué sur votre système de développement, vous devriez vérifier que vous avez cet ensemble si vous liez statiquement.
Une autre note, la copie de la DLL dans le même dossier que l'exécutable n'est pas une solution car elle va à l'encontre de l'idée de liaison statique.
Une autre option consiste à utiliser la version TDM de MinGW qui résout ce problème.
Modifier la mise à jour: cela peut ne pas résoudre le problème pour tout le monde. Une autre raison que j'ai récemment découverte pour cela est lorsque vous utilisez une bibliothèque compilée par quelqu'un d'autre, dans mon cas, c'était SFML qui a été mal compilé et donc requis une DLL qui n'existait pas car elle a été compilée avec une version de MinGW différente de celle que j'ai utilisation. J'utilise une version naine, celle-ci en utilisait une autre, donc je n'avais nulle part la DLL et bien sûr, je ne la voulais pas car c'était une construction statique. La solution peut être de trouver une autre version de la bibliothèque ou de la créer vous-même.
la source
En travaillant avec msys2, j'ai obtenu la même erreur en essayant d'exécuter la version finale de mon projet dans un environnement de débogage. La solution à mon problème est évidente: utilisez un exécutable avec des symboles de débogage.
la source
Dans CodeBlocks, vous pouvez aller dans Paramètres ... Compilateur ... et choisir 1) les deux éléments dans la case bleue ou 2) le seul élément dans la case verte
la source
Si vous vous demandez où vous pouvez télécharger la bibliothèque partagée (bien que cela ne fonctionnera pas sur les appareils de votre client à moins que vous n'incluiez la dll), voici le lien: https://de.osdn.net/projects/mingw/downloads/72215/ libgcc-9.2.0-1-mingw32-dll-1.tar.xz /
la source