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 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 ? big_smile


$ 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 big_smile)

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 ? wink


$ 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. wink

Bonne chance smile

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 big_smile
(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++ smile

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 ?

Le Barde a écrit :

[... 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 wink

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 big_smile

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