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 05/11/2008, à 15:54

Nargzul

C++ et ubuntu 8.10

Bonjour,

J'ai réinstallé mon pc l'autre jour, j'avais un code qui marchait impec sous ubuntu 8.04, et désormais j'ai une liste de:

g++ main.cpp mdate.h Date.cpp 
Date.cpp: In member function ‘const char* Date::day_of_week() const’:
Date.cpp:189: erreur: ‘strcpy’ was not declared in this scope
Date.cpp: In member function ‘Date& Date::set_special_day(const char*)’:
Date.cpp:293: erreur: ‘strlen’ was not declared in this scope
Date.cpp:294: erreur: ‘strcpy’ was not declared in this scope
Date.cpp: In member function ‘const char* Date::get_special_day()’:
Date.cpp:304: erreur: ‘strlen’ was not declared in this scope
Date.cpp:307: erreur: ‘strcat’ was not declared in this scope
Date.cpp:311: erreur: ‘strcat’ was not declared in this scope
Date.cpp:314: erreur: ‘strcat’ was not declared in this scope
Date.cpp:316: erreur: ‘strcat’ was not declared in this scope
Date.cpp: In member function ‘const char* Date::holiday() const’:
Date.cpp:355: erreur: ‘strlen’ was not declared in this scope
Date.cpp:356: erreur: ‘strcpy’ was not declared in this scope
Date.cpp:363: erreur: ‘strlen’ was not declared in this scope
Date.cpp:364: erreur: ‘strcpy’ was not declared in this scope
Date.cpp:372: erreur: ‘strlen’ was not declared in this scope
Date.cpp:373: erreur: ‘strcpy’ was not declared in this scope
Date.cpp:379: erreur: ‘strlen’ was not declared in this scope
Date.cpp:380: erreur: ‘strcpy’ was not declared in this scope
Date.cpp:386: erreur: ‘strlen’ was not declared in this scope
Date.cpp:387: erreur: ‘strcpy’ was not declared in this scope
Date.cpp: In member function ‘Date& Date::operator=(const Date&)’:
Date.cpp:410: erreur: ‘strlen’ was not declared in this scope
Date.cpp:411: erreur: ‘strcpy’ was not declared in this scope

Lors de la compilation

pourtant j'ai le paquet build-essential correctement installé:

sudo apt-get install build-essential
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
build-essential est déjà la plus récente version disponible.
build-essential passé en « installé manuellement ».
0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.

Avez vous une idée de ce qu'il me manque?


Dell E6400 - Ubuntu 9.10
Serveur OVH Kimsufi - Ubuntu 8.04
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit

Hors ligne

#2 Le 05/11/2008, à 16:03

yohann

Re : C++ et ubuntu 8.10

vérifie si tu a bien un

#include <string.h>

dans ton code, car toutes les fonctions non définies proviennent de cette bibliotheque.

et je ne vois aucune erreur du précompilateur comme quoi ce fichier n'est pas trouvé

si la ligne est présente essaye la compilation avec -Lstring (de mémoire car j'ai pas fait de C depuis quelques mois)
ou alors :

locate string.h
puis la compilation avec -Ipath/to/sring.h -Lstring

toujours de mémoire.

bonne chance en tout cas, c'est pas un problème tres grave je pense


oups:

j'avais pas vu c'est des fichier .cpp!
alors il doit y avoir peut etre une histoire de namespace:

genre using namespace "string";

ou alors préfixer les fonctions qui foirent avec string::

poste un bout de code si c'est rien de tout cela

Dernière modification par yohann (Le 05/11/2008, à 16:05)


j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

Hors ligne

#3 Le 05/11/2008, à 16:41

Nargzul

Re : C++ et ubuntu 8.10

Le truc c'est que j'ai jamais utilisé de string mais toujours des tableaux de char.

Deuxième truc étonnant:
Avec codeblock, il arrive à le compiler et le lancer sans problème, donc je pense que le code est juste, surtout qu'avant j'avais réussi à le lancer sans trop de soucis.

C'est pas des trucs hypers compliqués, c'était une classe d'introduction au c++, mais si tu veux que je te donne du code dis le.

Merki!


Dell E6400 - Ubuntu 9.10
Serveur OVH Kimsufi - Ubuntu 8.04
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit

Hors ligne

#4 Le 05/11/2008, à 18:13

yohann

Re : C++ et ubuntu 8.10

en fait string.h est la bibliotheque qui contient toutes les fonction qui commencent par str que tu utilise (man strcpy pour t'en convaincre).
donc cette bibliotheque DOIT etre incluse pour la compilation (de manière automatique, comme sur la précédente version d'ubuntu, ou avec codeblock, ou alors de manière manuelle comme avec la ligne de commande que tu utilise)

sinon il ne faut pas confondre <string.h> qui est une bibliothèque de C standard et string qui est une bibliotheque C++ pour l'utilisation de l'objet string.

la premiere traite des tableau de char alors que la seconde traite des objets string.

je ne doute pas de la justesse de ton code puisqu'il compilait avant, mais d'une instruction particuilière: #include <string.h> a mettre au début du code.

j'espère avoir été suffisament clair, bonne chance pour la suite


j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

Hors ligne

#5 Le 06/11/2008, à 06:45

Jean Bréfort

Re : C++ et ubuntu 8.10

En C++, il vaut mieux inclure cstring que string.h :

#include <cstring>

#6 Le 09/11/2008, à 03:09

elmer_tandem

Re : C++ et ubuntu 8.10

Les fonctions que tu utilises (strlen, etc) sont dans la bibli. C et pas la la STD C++. Donc tu doit inclure <cstring> (i.e string.h), ou <cstdlib> (i.e. stdlib.h), etc. La reponse est donnee ci dessus en fait.

A +.

Bob(s).