Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/01/2010, à 20:40

Sepu

[C] Anjuta: execution impossible du projet, probleme avec math.h

Bonjours

Après avoir compilé ma source je souhaiterai l'executer, mais j'ai une erreur qui m'indique qu'elle n'arrive pas a identifier la fonction pow()

main.c:55: undefined reference to `pow'

pourtant j'ai bien ajouter ma librairie

#include <math.h>

J'utilise Anjuta 2.28
Sous ubuntu 9.10
Merci d'avance

Dernière modification par Sepu (Le 22/01/2010, à 21:00)

Hors ligne

#2 Le 22/01/2010, à 23:46

Khyl

Re : [C] Anjuta: execution impossible du projet, probleme avec math.h

Tu pourrais mettre un peu plus de code stp ? dis comme ça on ne peut pas t'aider

Hors ligne

#3 Le 23/01/2010, à 02:28

Lstr

Re : [C] Anjuta: execution impossible du projet, probleme avec math.h

Rajouter "-lm" lors de la compilation gcc pour lui dire d'utiliser les mathématiques smile lol

gcc -lm -o nom_du_prog nom_du_prog.c

Hors ligne

#4 Le 23/01/2010, à 12:11

Sepu

Re : [C] Anjuta: execution impossible du projet, probleme avec math.h

Alors un peu plus de code:
C'est un exercice bidon fait au cours pour m'exercer à utiliser les fonctions

// LOGA C , Canevas Ex8 2009-2010   



#include <stdio.h>

#include <math.h>

 

// Fonction FtestA 

unsigned short FtestA (int nb)

{	

	int i,nbstar;

	unsigned short retour;



	if ((nb <= 15) && (nb >=1))

	{

		nbstar = nb;

		retour = 1;

	}

	if (nb > 15)

	{

		nbstar = 15;

		retour = 2;

	}

	if (nb <= 0)

		retour = 0;

	else

	{

		for (i=0;i<nbstar;i++)

			printf("*");	
	}



	return retour;			
}



// Fonction FtestB



double FtestB (int exp)

{			

	return pow(2,exp); 
}

// Fonction FtestC

int fDivision(int ValCa,int ValCb) 

{

	int resultat;

	resultat = ValCa / ValCb;

	return resultat;

}

int fReste(int ValCa,int ValCb) 

{

	int reste;

	reste = ValCa % ValCb;

	return reste;

}

//MAIN

int main (void)

{

	char UserAnswer;

	int code;

	const double Pi = 3.1415926535;

	int ValA,ValB,ValCa,ValCb,Reste,division;

	double resultat;

	

	// Affichage Ex7 Nom prénom



	printf("Ex7 apero \n");

	do {

		printf("\nTest A ou B ou C, Q pour Quitter \n");

		scanf("%c%*c", &UserAnswer);

		

		switch (UserAnswer) {

			case 'A':

			case 'a':

				printf("Entrez un nomre entre 1 et 15 \n");

				scanf("%i%*c", &ValA);

				
				code=FtestA(ValA);
				printf("\nTestA code execution = %i\n",code);

			break;



			case 'B':

			case 'b':

				printf("TestB: Entrez un exposant de -99 a 99 \n");

				scanf("%i%*c", &ValB);
							

				if ((ValB <= 99)&&(ValB >= -99))

				{

					resultat=FtestB(ValB);

					printf("TestB: 2 a la puissance %i = %g \n",ValB,resultat);

				}

				if (ValB > 99)

				{

					ValB=99;

					resultat=FtestB(ValB);

					printf("TestB: 2 a la puissance %i = %g \n",ValB,resultat);

				}

				if (ValB < -99)

				{

					ValB = -99;

					resultat=FtestB(ValB);

					printf("TestB: 2 a la puissance %i = %g \n",ValB,resultat);

				}



			break;



			case 'C':

			case 'c':

				printf("TestC: Entrez le dividende\n");

				scanf("%i%*c", &ValCa);

				printf("TestC: Entrez le diviseur\n");

				scanf("%i%*c", &ValCb);



				if (ValCb != 0)

				{	division=fDivision(ValCa,ValCb);

					printf("Resultat de %i / %i = %i\n",ValCa,ValCb,division);

					Reste=fReste(ValCa,ValCb);

					printf("Reste de %i / %i = %i\n",ValCa,ValCb,Reste);

				}

				else

					printf("TestC: Erreur division par 0!\n");

		break;

		} // end switch	

	} while (!(UserAnswer == 'Q' || UserAnswer == 'q'));



	return (0);

}

Sinon Lstr, c'est possible d'ajouter l'option -lm dans anjuta? j'ai pas envie de tout compiler  et débuger à la main à chaque fois

merci

Dernière modification par Sepu (Le 23/01/2010, à 12:16)

Hors ligne

#5 Le 23/01/2010, à 12:21

mika

Re : [C] Anjuta: execution impossible du projet, probleme avec math.h

Tu fais un makefile... Pour ton code ça suffit largement. Au pire tu modifies le configure que anjuta a du créer.


Pinard m'a tueR (in vino veritas ?)
Cherche logiciel pour tagger ses vinyles.

Hors ligne

#6 Le 23/01/2010, à 12:27

Sepu

Re : [C] Anjuta: execution impossible du projet, probleme avec math.h

okay, je veux bien modifier mon "makefile" mais je sais pas comment ni ou le faire.

Hors ligne

#7 Le 24/01/2010, à 13:25

Sepu

Re : [C] Anjuta: execution impossible du projet, probleme avec math.h

Je n'ai pas réussi  à faire ce que je voulais donc j'ai changé d'IDE et cela fonctionne avec codeblock

Hors ligne

#8 Le 24/01/2010, à 18:09

lazari

Re : [C] Anjuta: execution impossible du projet, probleme avec math.h

okay, je veux bien modifier mon "makefile" mais je sais pas comment ni ou le faire.

1- tu crée un projet C generic
2- tu met ton code dans le fichier  main.c
3- tu  modifi ton Makefile present dans le dossier src de ton projet comme ceci:

AM_CFLAGS = \
	 -Wall\
	 -g

MyProjet_SOURCES = \
	main.c

MyProjet_LDFLAGS = -lm      // -----------> liaison de la lib math
MyProjet_LDADD =
 .
 .
 .

MyProjet  est le nom de ton projet
tu enregistre lesmodifs et tu compile ( F11)

moi j'utilise Anjuta 2.4.1  sous ubunto 8.04.
voici  une introduction à makefile http://gl.developpez.com/tutoriel/outil/makefile/

Hors ligne

#9 Le 24/01/2010, à 19:33

mika

Re : [C] Anjuta: execution impossible du projet, probleme avec math.h

De mémoire codeblock génère pas de makefile. Quitte à choisir entre les deux, garde anjuta.


Pinard m'a tueR (in vino veritas ?)
Cherche logiciel pour tagger ses vinyles.

Hors ligne