Problème avec la librairie gmp de VC++ 6.0 sous windows [Résolu]

Signaler
Messages postés
301
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010
-
Messages postés
301
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010
-
voila ce que j'ai fait:
---------------------------
libgmp-3.dll>>>>>dans c:\windows\system32
gmp.h, mpf2mpfr.h, mpfr-impl.h, mpfr.h>>>>>dans c:\program files\microsoft visual studio\VC89\bin
libgcc.lib, libgmp.lib, libmpfr.lib, libcoldname.lib, libgmp.libvc6, libmpfr.libvc6>>>>>>>>>dans c:\program files\microsoft visual studio\VC89\lib
--------------------------------
est ce que j'ai oublié quelque chose???
ensuite j'ai écris ce petit programme:
////////////////////////////
#include <stdio.h>
#include <gmp.h>

void main()
{
double bas1,exp1,mod1,resu;
mpz_t res,base,exp,mod;
mpz_init(res);

bas1=9;
exp1=23;
mod1=187;

mpz_set_d(base,bas1);
mpz_set_d(exp,exp1);
mpz_set_d(mod,mod1);

mpz_powm(res,base,exp,mod);

resu=mpz_get_d(res);

printf("le resu est %lf",resu);

getchar();

}
////////////////////////////////////
et à la compilation, il m'affiche :
error LNK2001: unresolved external symbol pour :
__imp____gmpz_get_d, et __imp____gmpz_powm, et __imp____gmpz_set_d, et enfin __imp____gmpz_init
qu'est ce que je dois faire????
merci pour votre aide

5 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
essaie de faire
mpz_init(base);
mpz_init(exp);
mpz_init(mod);
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Il ne suffit pas de mettre les libs au bon endroit, il faut aussi dire au linker de les utiliser. Dans ton code:
#pragma comment(lib, "libgmp.lib")
Messages postés
301
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010

merci pour ta reponse vecchio56
ça se compile avec un petit warning :
warning C4081: expected 'newline' ; found ';'
bref, mais à l'execution çe ne m'affiche rien, j'ai ajouté des printf au milieu :
////////////////////////////////////////////////////////
#include <stdio.h>
#include <gmp.h>
#pragma comment (lib, "libgmp.lib");


void main()
{
double bas1,exp1,mod1,resu;
mpz_t res,base,exp,mod;
mpz_init(res);


bas1=9;
exp1=23;
mod1=187;


printf("avant les set");



mpz_set_d(base,bas1);
mpz_set_d(exp,exp1);
mpz_set_d(mod,mod1);


printf("apres les set");



mpz_powm(res,base,exp,mod);


printf("apres powm");



resu=mpz_get_d(res);


printf("apres resu");



printf("le resu est %lf",resu);


getchar();


}
//////////////////////////////////////////////
et à l'execution, il m'affiche : avant les set (le premier printf seulement)
je comprend pas??!!??
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Pas de ; à la fin du pragma

Je pense que pour le reste tu t'y prends mal, je crois qu'il y a des initialisations a faire, mais je me souviens plus comment ca marche
Messages postés
301
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010

c'est bon ça marche!
je te remercie infiniment vecchio56