Problème avec la librairie gmp de VC++ 6.0 sous windows

Résolu
cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 - 3 mars 2006 à 07:19
cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 - 3 mars 2006 à 12:28
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

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
3 mars 2006 à 11:41
essaie de faire
mpz_init(base);
mpz_init(exp);
mpz_init(mod);
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
3 mars 2006 à 10:32
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")
0
cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
3 mars 2006 à 11:32
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??!!??
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
3 mars 2006 à 11:38
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
3 mars 2006 à 12:28
c'est bon ça marche!
je te remercie infiniment vecchio56
0
Rejoignez-nous