1 pièce(s) jointe(s)
Exécuter mon .exe sans code::blocks => erreur dll !
Bonjour, je voudrais juste exécuter un un fichier exécutable généré avec code::blocks et sans erreurs.
Le fichier est dans \obj\debug\*.exe et j'ai une erreur de dll manquante, je comprends pas.
Pièce jointe 157978
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| #include <iostream>
#include <stdlib.h>
#include <time.h>
#include "ia1.h"
using namespace std;
int z,i,code,cpt,a,b;
//int code=84;
int main()
{
a=0;
b=100;
cpt=0;
time_t t;
srand ((unsigned) time (&t));
code = rand ()% 100;
cout<<"Bienvenue au Loto 2006"<<endl;
for (i=0;i<=10;i++)
{
cout<<"Choisis un nombre entre "<<a<<" et "<<b<<endl;
cpt++;
saisie ();
verify (z);
}
cout<<"Perdu !"<<endl;
system ("pause");
system("exit");
return 0;
}
int saisie (void)
{
cin>>z;
}
void verify (int y)
{
if (y==code)
{cout<<"Bravo tu as gagné en "<<cpt<< " coups"<<endl;
a=0;b=100;cpt=0;cout<<"\a";
system ("pause");system ("cls");main ();}
if (y<code)
{a=y;}
if (y>code)
{b=y;}
} |
MERCI ! ; en effet copie des dll depuis MinGW/bin dans le bin release et debug résoud ce PB sans ajouter les
Citation:
Envoyé par
koala01
Salut,
En un mot : oui...
En un peu plus d'un mot : libgcc_s_dw-x.y.dll est une dll qui fourni certaines fonctionnalités fournies par gcc pour la gestion générale dont tu ne dispose que parce que tu as installé MinGW. libstdc++-6.dll est, quant à elle, la dll qui fournit les fonctionnalités offertes par la bibliothèque standard de C++, spécialement compilée pour pouvoir être utilisée par les programmes compilés avec Gcc (MinGW).
Si ton programme s'exécute sous Code::Blocks mais pas lorsque tu essaye de le lancer en dehors de Code::blocks, c'est parce que Code::Blocks rajoute automatiquement le chemin vers le dossier bin de MinGW aux chemins utilisés pour la recherche des dll (et des autres exécutables) mais que ce dossier n'a pas été rajouté à la variable PATH connue par windows (chose à laquelle on peut remédier assez facilement, ceci dit ;))
Une solution serait de veiller à utiliser la version statique de ces bibliothèques (en ajoutant les options -static-libgcc et -static-libstdc++ aux options d'édition de liens), afin de ne plus avoir besoin des dlls, mais dont le prix à payer est un exécutable (parfois beaucoup) plus gros.
Notes que, de manière générale, c'est un problème que tu risques d'avoir avec de nombreuses bibliothèques (en gros : toutes celles qui sont disponibles sous la forme de dll) car les dll ont pour but de fournir le code exécutable de la bibliothèque sans qu'il ne soit nécessaire de placer ce code dans l'application générée. Le but de la manoeuvre étant de te permettre de mettre les bibliothèques à jour sans forcément avoir besoin de recompiler l'application entière.