#1 Le 17/07/2007, à 13:10
- Le Barde
[RÉSOLU] string, suite et fin : g++ & qmake, c'est possible ?
Bonjour,
À la compilation de mon projet, gcc me raconte :
portable:~/Documents/Travail/recherche/StageFlowShop/C++$ make
g++ -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I/usr/include/qt3 -o Application.o Application.cpp
Application.cpp:18: attention : unused parameter «argc"
Application.cpp:18: attention : unused parameter «argv"
g++ -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I/usr/include/qt3 -o BandB.o Flowshop/BandB/BandB.cpp
Flowshop/BandB/../../Entrees-Sorties/Console.h:15: erreur: «string" in namespace «std" does not name a type
make: *** [BandB.o] Erreur 1
portable:~/Documents/Travail/recherche/StageFlowShop/C++$
Voici le fichier Console.h en question :
#ifndef Console_H
#define Console_H
#include <string.h>
// Cette classe s'occupe des Entrées-sorties dans la console.
template <class TYPE>
class Console
{
public:
Console();
static void Afficher(char* Prompt);
static void Afficher(TYPE Prompt);
static std::string EnString(TYPE Transformazione);
};
#endif
Deux questions :
1. Quelqu'un sait-il pourquoi **«string" in namespace «std" does not name a type** ?
2. Lorsque je mets un #include <string> au lieu de string.h, gcc me met le message d'erreur ci-dessous ; pourquoi n'ai-je pas le fichier <string> ?
portable:~/Documents/Travail/recherche/StageFlowShop/C++$ make
g++ -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I/usr/include/qt3 -o Application.o Application.cpp
Application.cpp:18: attention : unused parameter «argc"
Application.cpp:18: attention : unused parameter «argv"
g++ -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I/usr/include/qt3 -o BandB.o Flowshop/BandB/BandB.cpp
gcc -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I/usr/include/qt3 -o Console.o Entrees-Sorties/Console.h
Entrees-Sorties/Console.h:4:18: erreur: string : Aucun fichier ou répertoire de ce type
Entrees-Sorties/Console.h:8: erreur: expected «=", «,", «;", «asm" or «__attribute__" before «<" token
make: *** [Console.o] Erreur 1
Dernière modification par Le Barde (Le 17/07/2007, à 20:31)
Hors ligne
#2 Le 17/07/2007, à 14:31
- SnakemaN
Re : [RÉSOLU] string, suite et fin : g++ & qmake, c'est possible ?
C'est pas String avec S majuscule ?
"Bon chat n'a besoin de beau collier d'or "
Membre du Groupe des Parrains Linux
Hors ligne
#3 Le 17/07/2007, à 14:47
- Le Barde
Re : [RÉSOLU] string, suite et fin : g++ & qmake, c'est possible ?
Visiblement non, je viens d'essayer...
Hors ligne
#4 Le 17/07/2007, à 14:58
- mirmidon
Re : [RÉSOLU] string, suite et fin : g++ & qmake, c'est possible ?
Salut Le barde,
Tu as aussi le fichier BandB.cpp pour voir ?
$ sudo make plaisir
Quand l'informatique redevient un plaisir.
The Ubuntu Counter Project - user number #10290
Hors ligne
#5 Le 17/07/2007, à 15:03
- Le Barde
Re : [RÉSOLU] string, suite et fin : g++ & qmake, c'est possible ?
Le BandB.h :
#ifndef BandB_H
#define BandB_H
#include "Noeud.h"
#include "ListeNoeuds.h"
#include "../Ordo.h"
class BandB
{
private:
static int nbJob;
static int nbMach;
Noeud* racine;
Noeud* noeudFils;
public:
static Ordo* probleme;
ListeNoeuds* listeNoeuds;
Noeud* noeudOpt;
int nbDev, nbNoeud;
double zopt;
double** spij;
public:
BandB(Ordo* ordo);
void Developpe();
Noeud* NouveauNoeudCourant();
};
#endif
Et le BandB.cpp :
#include "BandB.h"
// Pour que NULL soit défini :
#include <stdlib.h>
// Et en attendant mieux :
#include "../../Entrees-Sorties/Console.h"
//#include "../Ordo.h"
BandB::BandB(Ordo* ordo)
{
// Initialisation de la recherche
nbDev = 0; nbNoeud = 0;
probleme = ordo;
nbJob = probleme->reference->GetNbJob();
nbMach = probleme->reference->GetNbMach();
zopt = probleme->Resultat;
racine = new Noeud(listeNoeuds);
noeudOpt = racine;
listeNoeuds = new ListeNoeuds(this);
spij = new double*[nbJob]; // Initialisation du tableau à 2 dimensions spij.
for (int a=0; a< nbMach+1 ; a++)
{
spij[a] = new double[nbMach];
}
// Calculs preliminaires pour l'evaluatioin des bornes
for (int i=0; i<nbJob; i++)
for (int j=0; j<nbMach; j++)
{
int jj;
spij[i][j]=0;
if (j<nbMach-1)
for (jj=j+1; jj<nbMach; jj++)
spij[i][j] += probleme->reference->Pij(i,jj);
}
}
void BandB::Developpe()
{
Noeud* noeudCourant = racine;
while (noeudCourant)
{
int i;
// Developpement du noeud courant
nbDev++;
for (i=0; i<nbJob - noeudCourant->niveau; i++)
{
noeudFils = new Noeud(noeudCourant, i);
nbNoeud++;
noeudFils->Evaluer();
if (noeudFils->borneInf < zopt)
{
if (noeudFils->niveau<nbJob)
listeNoeuds->PlacerEnTete(noeudFils);
else
{
noeudOpt = noeudFils;
zopt = noeudOpt->borneInf;
}
}
}
// Nouveau noeud à developper
noeudCourant = NouveauNoeudCourant();
}
Console<int>::Afficher("Nb noeuds apparus: ");
Console<int>::Afficher((char*)(nbNoeud));
Console<int>::Afficher("\nNb noeuds developpes:");
Console<int>::Afficher((char*)(nbDev));
}
Noeud* BandB::NouveauNoeudCourant()
{
Noeud* noeudCourant;
if (listeNoeuds->Length!=0)
{
// Extrait le premier element de la liste, à condition qu'il soit interessant
noeudCourant = listeNoeuds->Premier();
while ((noeudCourant)&&(noeudCourant->borneInf>zopt))
noeudCourant = listeNoeuds->Premier();
}
else noeudCourant = NULL;
return(noeudCourant);
}
(C'est un peu le souk, je sais : c'est en chantier, c'est un portage d'un projet qui a été initialement écrit en C#, quelle horreur )
Hors ligne
#6 Le 17/07/2007, à 15:04
- mirmidon
Re : [RÉSOLU] string, suite et fin : g++ & qmake, c'est possible ?
Par contre, essaye :
#include <string>
using namespace std;
à la place de
#include <string.h>
pour utiliser les chaines.
Qui sais ?
$ sudo make plaisir
Quand l'informatique redevient un plaisir.
The Ubuntu Counter Project - user number #10290
Hors ligne
#7 Le 17/07/2007, à 15:08
- Le Barde
Re : [RÉSOLU] string, suite et fin : g++ & qmake, c'est possible ?
Non ça ne fonctionne pas. En fait, j'ai regardé dans /usr/include/, et string n'y est pas ! C'est à n'y rien comprendre. Alors je regarde dans /usr/include/C++/4.1.2/, et là, jackpot ! string y est, mais quand je fais un include, ça me met des erreurs :
adrien@adrien-portable:~/Documents/Travail/recherche/StageFlowShop/C++$ make
g++ -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I/usr/include/qt3 -o Application.o Application.cpp
Application.cpp:18: attention : unused parameter «argc"
Application.cpp:18: attention : unused parameter «argv"
g++ -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I/usr/include/qt3 -o BandB.o Flowshop/BandB/BandB.cpp
gcc -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I/usr/include/qt3 -o Console.o Entrees-Sorties/Console.h
Dans le fichier inclus à partir de Entrees-Sorties/Console.h:4:
/usr/include/c++/4.1.2/string:44:28: erreur: bits/c++config.h : Aucun fichier ou répertoire de ce type
/usr/include/c++/4.1.2/string:45:28: erreur: bits/stringfwd.h : Aucun fichier ou répertoire de ce type
/usr/include/c++/4.1.2/string:46:30: erreur: bits/char_traits.h : Aucun fichier ou répertoire de ce type
/usr/include/c++/4.1.2/string:47:37: erreur: memory : Aucun fichier ou répertoire de ce type
/usr/include/c++/4.1.2/string:48:34: erreur: bits/cpp_type_traits.h : Aucun fichier ou répertoire de ce type
/usr/include/c++/4.1.2/string:49:63: erreur: iosfwd : Aucun fichier ou répertoire de ce type
/usr/include/c++/4.1.2/string:50:31: erreur: bits/stl_iterator.h : Aucun fichier ou répertoire de ce type
/usr/include/c++/4.1.2/string:51:44: erreur: bits/stl_function.h : Aucun fichier ou répertoire de ce type
/usr/include/c++/4.1.2/string:52:31: erreur: bits/basic_string.h : Aucun fichier ou répertoire de ce type
/usr/include/c++/4.1.2/string:55:37: erreur: algorithm : Aucun fichier ou répertoire de ce type
/usr/include/c++/4.1.2/string:56:35: erreur: bits/basic_string.tcc : Aucun fichier ou répertoire de ce type
Entrees-Sorties/Console.h:8: erreur: expected «=", «,", «;", «asm" or «__attribute__" before «<" token
make: *** [Console.o] Erreur 1
adrien@adrien-portable:~/Documents/Travail/recherche/StageFlowShop/C++$
Genre il n'aime pas que j'utilise les include de C++/4.1.2/ ^^
Je ne comprends pas, string n'existe pas dans le répertoire /usr/include/ :'(
Hors ligne
#8 Le 17/07/2007, à 15:22
- mirmidon
Re : [RÉSOLU] string, suite et fin : g++ & qmake, c'est possible ?
Je n'ai pas trouvé grand chose sur Internet mais il est évident que le problème viens de l'inclusion du type string qui ne se fait pas !
Il faut trouver s'il est installé sur le poste, le fichier string.h de la version de Qt3 que tu utilises !
Ensuite, il faut inclure le chemin où il se trouve dans ton path OU bien avant la compilation l'inclure dans le configure.
Bonne chance
Dernière modification par mirmidon (Le 17/07/2007, à 15:23)
$ sudo make plaisir
Quand l'informatique redevient un plaisir.
The Ubuntu Counter Project - user number #10290
Hors ligne
#9 Le 17/07/2007, à 15:30
- Le Barde
Re : [RÉSOLU] string, suite et fin : g++ & qmake, c'est possible ?
Mince, ça. Pour info, pour mon projet j'utilise qmake pour générer le makefile.
Par contre, pour ce qui concerne le fichier string.h, il est bien dans /usr/include/.
Bon, mais j'aimerais bien quand-même plutôt pouvoir utiliser string et non string.h, y paraît que c'est mieux pour le C++... Et là, il n'y est carrément pas.
Je vais tout de même regarder dans le fichier /usr/include/string.h pour voir si je peux obtenir des infos
(J'ai oublié de te remercier jusqu'ici pour ton aide ! Pour moi c'est pas encore gagné cependant :'()
Dernière modification par Le Barde (Le 17/07/2007, à 15:31)
Hors ligne
#10 Le 17/07/2007, à 15:38
- Le Barde
Re : [RÉSOLU] string, suite et fin : g++ & qmake, c'est possible ?
Du nouveau ; j'ai essayé un simple "hello-world" :
#include <iostream>
int main()
{
std::cout<<"hello world";
return 0;
}
Et ça me donne :
adrien@adrien-portable:~/Desktop$ gcc bouh.cpp
/tmp/ccuEGWHR.o: In function `__static_initialization_and_destruction_0(int, int)':
bouh.cpp:(.text+0x23): undefined reference to `std::ios_base::Init::Init()'
/tmp/ccuEGWHR.o: In function `__tcf_0':
bouh.cpp:(.text+0x6c): undefined reference to `std::ios_base::Init::~Init()'
/tmp/ccuEGWHR.o: In function `main':
bouh.cpp:(.text+0x8e): undefined reference to `std::cout'
bouh.cpp:(.text+0x93): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/tmp/ccuEGWHR.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld a retourné 1 code d'état d'exécution
Inquiétant... non ?
Hors ligne
#11 Le 17/07/2007, à 15:41
- toto4455
Re : [RÉSOLU] string, suite et fin : g++ & qmake, c'est possible ?
Inquiétant... non ?
oui c inquietant de compiler un fichier c++ avc gcc lol
teste avec g++
Bon, mais j'aimerais bien quand-même plutôt pouvoir utiliser string et non string.h, y paraît que c'est mieux pour le C++... Et là, il n'y est carrément pas.
on dirais le meme pb , ton makefile compile le console.h avec gcc
gcc -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I/usr/include/qt3 -o Console.o Entrees-Sorties/Console.h
#12 Le 17/07/2007, à 15:46
- Luc Hermitte
Re : [RÉSOLU] string, suite et fin : g++ & qmake, c'est possible ?
[... compilation de C++ avec un compilo C ...]
Inquiétant... non ?
Non, c'est parfaitement normal qu'il y ait des problèmes ici.
Compiles, et linke (!), avec g++.
PS: pas de majuscules
PPS: pas de <string.h> en C++ pour utiliser std::string. <string.h> et <string> sont deux fichiers d'en-tête sans rapport. Et le premier est sensé être remplacé par <cstring> en C++.
#13 Le 17/07/2007, à 15:51
- Le Barde
Re : [RÉSOLU] string, suite et fin : g++ & qmake, c'est possible ?
Aha oui, je viens de m'en rendre compte ! Merci également !
Bon, mon hello world compile, c'est déjà ça ^^
Par contre, si quelqu'un sait comment utiliser g++ et non gcc avec qmake...? C'est donc sûrement ça le problème
Hors ligne
#14 Le 17/07/2007, à 20:30
- Le Barde
Re : [RÉSOLU] string, suite et fin : g++ & qmake, c'est possible ?
J'ai trouvé !
Bon alors je m'esseplique : les fichiers en-têtes de mes classes étaient en .h, et donc le système (qmake, make ou je ne sais quoi) "comprend" qu'il faut utiliser gcc
L'enseignant qui nous a formés dans mon école mettait les extensions des en-têtes en .h alors qu'en C++ c'est .hpp ! Et moi, je ne me pose pas plus de questions !
Merci à tous pour votre aide !
Adrien Poupin, alias Le Barde.
EDIT : En fait, dans mon makefile j'avais inversé un source et un en-tête... Make, qui voit une extension qu'il ne connaît pas, utilise donc un compilateur par défaut : gcc. En intervertisssant ça, ça utilise bien g++.
Donc c'est bien [RÉSOLU]. Merci à tous.
Dernière modification par Le Barde (Le 18/07/2007, à 09:41)
Hors ligne