IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

[asio] erreur de syntaxe,spécificateur de type manquant et d autre


Sujet :

Boost C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Points : 96
    Points
    96
    Par défaut [asio] erreur de syntaxe,spécificateur de type manquant et d autre
    Bonjour,

    j ai télécharger le code source sur ce site :

    http://khayyam.developpez.com/articl.../architecture/

    j ai voulu tester de le compiler et voir comment ca fonctionne et je me suis retrouver avec plusieurs soucie, en particulier avec asio.

    par exemple sur ces fichier console.h et console.cpp que je vous met ici :

    console.cpp
    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    #include "console.h"
    #include <RendererModules/IrrlichtRenderer/irrlichtrenderer.h>
    #include <iostream>
    #include <vector>
    #include <sstream>
    #include <windows.h>
     
    console::console(){
    	idevice = irr::createDevice(irr::video::EDT_OPENGL, irr::core::dimension2d<irr::s32>(800, 600), 32, false, false, false);
    	driver = idevice->getVideoDriver();
    	idevice->getCursorControl()->setVisible(false);
    	running = true;
    	c = NULL;
     
    	CEGUI::IrrlichtRenderer *myRenderer = new CEGUI::IrrlichtRenderer(idevice);
    	new CEGUI::System(myRenderer);
     
    	CEGUI::SchemeManager::getSingleton().loadScheme("./data/gui/schemes/TaharezLook.scheme");
    	CEGUI::FontManager::getSingleton().createFont("./data/gui/fonts/Commonwealth-10.font");
    	CEGUI::System::getSingleton().setDefaultMouseCursor("TaharezLook", "MouseArrow");
     
    	idevice->setEventReceiver(this);
     
    	display();
    }
     
    console::~console(){
    	if (c)
    		delete c;
    }
     
    bool console::OnEvent(irr::SEvent e){
    	if (!idevice)
    		return false;
     
    	switch (e.EventType){
    		case irr::EET_MOUSE_INPUT_EVENT:
    			// inject mouse position
    			CEGUI::System::getSingleton().injectMousePosition((float)e.MouseInput.X, (float)e.MouseInput.Y);
    			// inject mouse clic
    			switch (e.MouseInput.Event){
    				case irr::EMIE_LMOUSE_PRESSED_DOWN : 
    					CEGUI::System::getSingleton().injectMouseButtonDown(CEGUI::LeftButton);
    					break;
    				case irr::EMIE_LMOUSE_LEFT_UP : 
    					CEGUI::System::getSingleton().injectMouseButtonUp(CEGUI::LeftButton);
    					break;
    				case irr::EMIE_MOUSE_WHEEL :
    					CEGUI::System::getSingleton().injectMouseWheelChange(e.MouseInput.Wheel);
    					break;
    				default:
    					break;			
    			}			
    			return true;
    		case irr::EET_KEY_INPUT_EVENT:		
    			if (e.KeyInput.PressedDown){
    				// inject all the special keys
    				switch(e.KeyInput.Key){
    					case irr::KEY_RETURN:	CEGUI::System::getSingleton().injectKeyDown(CEGUI::Key::Return);	break;
    					case irr::KEY_BACK:		CEGUI::System::getSingleton().injectKeyDown(CEGUI::Key::Backspace);	break;
    					case irr::KEY_TAB:		CEGUI::System::getSingleton().injectKeyDown(CEGUI::Key::Tab);	break;
    					default:
    						CEGUI::System::getSingleton().injectChar(e.KeyInput.Char);
    						break;
    				}									
    			}
    			break;	
    		default:
    			return false;
    	}
     
    	return false;
    }
     
    void console::display(){
    	CEGUI::WindowManager& winMgr = CEGUI::WindowManager::getSingleton ();
    	winMgr.destroyAllWindows();
    	CEGUI::Window* background = winMgr.createWindow("TaharezLook/StaticImage");
     
    	background->setProperty ("Image", "set:BackgroundImage image:full_image");
    	background->setProperty ("FrameEnabled", "false");
        background->setProperty ("BackgroundEnabled", "false");
     
    	background->addChildWindow (winMgr.loadWindowLayout ("./data/gui/layouts/screen.layout", "root/"));
     
    	CEGUI::WindowManager::getSingleton().getWindow("root/b_ok")->
    		subscribeEvent(CEGUI::PushButton::EventClicked, CEGUI::Event::Subscriber(&console::handle_ok, this));
     
    	CEGUI::System::getSingleton ().setGUISheet (background);
    }
     
    void console::process(){
    	CEGUI::Editbox *eb = static_cast<CEGUI::Editbox*>(CEGUI::WindowManager::getSingleton().getWindow("root/input"));
    	std::string str = std::string(eb->getText().c_str());
    	eb->setText("");
     
    	add_msg_output(std::string(">>")+str);
     
    	if (str == "")
    		return;
     
    	// check if "quit"
    	if (str == "quit"){
    		running = false;
    		return;
    	}
     
    	// let's explode the string
    	std::istringstream iss(str);
    	std::vector<std::string> command_line;
    	std::string temp;
    	while (std::getline(iss, temp, ' ')){
    		command_line.push_back(temp);
    	}
     
    	// check if "connect"
    	if (command_line[0] == "connect"){
    		if (command_line.size() < 5){
    			std::string msg = "Too few arguments : connect [host] [port] [login] [pass]";
    			add_msg_output(msg);
    			return;
    		}else{
    			// extract the port number
    			std::istringstream s(command_line[2]);
    			int port;
    			s >> port;
     
    			if (c)
    				delete c;
     
    			try{
    				c = new connection(this, command_line[1], port, command_line[3], command_line[4]);
    			}catch(std::string& e){
    				if (e == "delete me")
    					if (c){delete c; c = NULL;}
    			}catch(std::exception &e){
    				add_msg_output(std::string(e.what()));
    				if (c){delete c; c = NULL;}
    			}catch(...){
    				add_msg_output(std::string("Erreur"));
    				if (c){delete c; c = NULL;}			
    			}
    		}
    		return;
    	}
     
    	// else, send to the server
    	if (c)
    		std::string out = c->send(str);
    	else 
    		add_msg_output(std::string("connect first"));
    }
     
    void console::run(){
    	asio::deadline_timer timer(io, boost::posix_time::seconds(0));
     
    	while (running && driver && idevice->run()){
    		driver->beginScene(true, true, irr::video::SColor(0,100,100,100));
    		CEGUI::System::getSingleton().renderGUI();
    		driver->endScene();	
     
    		timer.expires_at(timer.expires_at() + boost::posix_time::millisec(10));
    		timer.wait();
    	}
    }
     
    void console::add_msg_output(std::string& s){
    	CEGUI::MultiColumnList *m = static_cast<CEGUI::MultiColumnList*>(CEGUI::WindowManager::getSingleton().getWindow("root/output"));
    	CEGUI::String current = m->getText();
     
    	current.append(s);
    	current.append("\n");
     
    	m->setText(current);
    }


    console.h
    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #ifndef H__console__
    #define H__console__
     
    #include <irrlicht.h>
    #include <CEGUI.h>
    #include <string>
    #include "connection.h"
     
    class console : public irr::IEventReceiver{
    public:
    	console();
    	~console();
    	void run();
     
    	bool OnEvent(irr::SEvent);
    	bool handle_ok(const CEGUI::EventArgs&)	{process();	return true;}
     
    	void add_msg_output(std::string&);
     
    	asio::io_service io;
    private:
    	void display();
    	void process();
     
    	irr::video::IVideoDriver *driver;
    	CEGUI::System *sys;
    	irr::IrrlichtDevice *idevice;
     
    	bool running;
     
    	connection *c;
    };
     
    #endif

    dans la logique ce code venant d un tuto du site devrais etre fonctionnelle (je veux dire sans erreur) il est dit que ca compile bien.

    mais moi j ai toutes ces petite erreur (de syntaxe, ou identificateur non déclaré ou encore spécificateur de type manquant...

    je ne comprend pas pourquoi, je vous montre les erreurs que j ai en sortie.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    remote-console\src\console.h(20) : error C2653: 'asio'*: n'est pas un nom de classe ni d'espace de noms
    remote-console\src\console.h(20) : error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'io'
    remote-console\src\console.h(20) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    remote-console\src\console.h(20) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    console.cpp
    remote-console\src\connection.h(18) : error C2653: 'asio'*: n'est pas un nom de classe ni d'espace de noms
    remote-console\src\connection.h(18) : error C2143: erreur de syntaxe*: absence de ';' avant '*'
    remote-console\src\connection.h(18) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    remote-console\src\connection.h(18) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    remote-console\src\console.h(20) : error C2653: 'asio'*: n'est pas un nom de classe ni d'espace de noms
    remote-console\src\console.h(20) : error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'io'
    remote-console\src\console.h(20) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    remote-console\src\console.h(20) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    .\src\console.cpp(155) : error C2653: 'asio'*: n'est pas un nom de classe ni d'espace de noms
    .\src\console.cpp(155) : error C2065: 'deadline_timer'*: identificateur non déclaré
    .\src\console.cpp(155) : error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'timer'
    .\src\console.cpp(155) : error C2065: 'io'*: identificateur non déclaré
    .\src\console.cpp(155) : error C3861: 'timer'*: identificateur introuvable
    .\src\console.cpp(162) : error C2065: 'timer'*: identificateur non déclaré
    .\src\console.cpp(162) : error C2228: la partie gauche de '.expires_at' doit avoir un class/struct/union
            le type est ''unknown-type''
    .\src\console.cpp(162) : error C2065: 'timer'*: identificateur non déclaré
    .\src\console.cpp(162) : error C2228: la partie gauche de '.expires_at' doit avoir un class/struct/union
            le type est ''unknown-type''
    .\src\console.cpp(163) : error C2065: 'timer'*: identificateur non déclaré
    .\src\console.cpp(163) : error C2228: la partie gauche de '.wait' doit avoir un class/struct/union
            le type est ''unknown-type''
    J aimerais bien comprendre pourquoi, aurais je oublier quelque chose ou c est tout simplement le code qui vas pas ?


    Pour info je compile avec "Microsoft Visual C++ 2008 Express Édition", et je débute, je vous remercie pour votre compréhension, si vous pouviez m expliquer le plus simplement car les mot technique je suis pas bien familiariser avec.

    Merci pour votre aide

  2. #2
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Peux-tu ne nous donner QUE les lignes concernées ?

    Mais à mon avis, tu n'as pas (bien) installé Boost.Asio.

    Tu as installé boost comment ? Quelle version ? (Asio n'est comprise dans boost que depuis la 1.35, il faut l'installer séparément pour les versions précédentes)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Points : 96
    Points
    96
    Par défaut
    comme demander je met que les lignes d erreur concerner.

    console.h
    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    asio::io_service io;

    et les erreurs pour cette ligne :

    Citation Envoyé par sortie
    console.h(20) : error C2653: 'asio'*: n'est pas un nom de classe ni d'espace de noms
    console.h(20) : error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'io'
    console.h(20) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    console.h(20) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    console.cpp
    console.h(20) : error C2653: 'asio'*: n'est pas un nom de classe ni d'espace de noms
    console.h(20) : error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'io'
    console.h(20) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    console.h(20) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    Pour le console.cpp
    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    asio::deadline_timer timer(io, boost::posix_time::seconds(0));
    		timer.expires_at(timer.expires_at() + boost::posix_time::millisec(10));
    		timer.wait();

    et les erreurs des cet lignes :

    Citation Envoyé par sortie
    console.cpp(155) : error C2653: 'asio'*: n'est pas un nom de classe ni d'espace de noms
    console.cpp(155) : error C2065: 'deadline_timer'*: identificateur non déclaré
    console.cpp(155) : error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'timer'
    console.cpp(155) : error C2065: 'io'*: identificateur non déclaré
    console.cpp(155) : error C3861: 'timer'*: identificateur introuvable
    console.cpp(162) : error C2065: 'timer'*: identificateur non déclaré
    console.cpp(162) : error C2228: la partie gauche de '.expires_at' doit avoir un class/struct/union le type est ''unknown-type''
    console.cpp(162) : error C2065: 'timer'*: identificateur non déclaré
    console.cpp(162) : error C2228: la partie gauche de '.expires_at' doit avoir un class/struct/union le type est ''unknown-type''
    console.cpp(163) : error C2065: 'timer'*: identificateur non déclaré
    console.cpp(163) : error C2228: la partie gauche de '.wait' doit avoir un class/struct/union le type est ''unknown-type''

    Citation Envoyé par Alp
    Quelle version as tu installé ?
    j ai installer la version 1.35 de boost, mais j ai aussi instaler la version 1.0.0 de asio en écrasant asio existant (je pense pas que cela soit ca les version doivent être identique).

    Citation Envoyé par Alp
    Tu as installé boost comment ?
    j ai pris le .exe de boost 1.35 et j ai instaler le dossier dans "C:\Program Files\Microsoft Visual Studio 9.0\boost_1_35_0"

    ensuite j ai dit au compilateur d aller chercher le dossier en passant par outil/option/ :projets et solution:répertoire de VC++
    j ai mis dans le répertoire include le dossier ou est situer boost
    et dans bibliothèque la lib du dossier boost (toute les librairie été compiler dans le .exe)

    voila en gros comment j ai installer ça, aurais oublier quelque chose ?

    Merci encore pour votre aide.

  4. #4
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    A mon avis, tu devrais :
    - désinstaller boost
    - supprimer tout ce qui reste (l'installation de asio 1.0 que tu as faite à la main par ex)
    - réinstaller boost et ne pas installer une autre version d'asio que celle qui est fournie

    Et en re-configurant les dossiers d'include/lib de VC++, réessayer de compiler ton projet.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Points : 96
    Points
    96
    Par défaut
    j ai suivie ton conseil, j ai tout désinstaller et réinstaller boost 1.35.0.

    j ai essayer de compiler et j ai une erreur qui vient de leur fichier hpp :

    Citation Envoyé par sortie
    C:\Program Files\boost\boost_1_35_0\boost/asio/detail/socket_types.hpp(27) : fatal error C1189: #error : WinSock.h has already been included
    Si je fait "générer la solution" j obtiens toujours les mêmes erreurs que précédemment. y aurais t il d autre chose a ajouter dans le VC++ pour la configuration ?

    l osque je génère le projet il me dit que mon projet est obsolète, sa veux dire quoi ? que le code est de l ancien temps .

    j ai du mal a comprendre, il y a pas une version de compilateur a paramétrer (je pense comme en java j ai du mettre "compiler en version 6" car en 5 çà fonctionner pas) je me dit que c est peux être pareil avec les compilateur c++ non ? si c est le cas je c est pas ou c est.

    Merci encore pour ton aide Alp

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    A mon avis, asio se trouve maintenant dans l'espace de nom boost. Donc using namespace boost::asio si tu prends un using, sinon tu préfixes tout par boost::.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Points : 96
    Points
    96
    Par défaut
    desoler, j ai du mal a comprendre ce que tu veux dire par :

    Citation Envoyé par Matthieu Brucher
    "asio se trouve maintenant dans l'espace de nom boost,Donc using namespace boost::asio si tu prends un using"
    çà veux dire que je doit faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boost::asio::io_service io;
    ou

    au lieux de

    suis pas sur d avoir bien compris, merci de m éclairer un peux plus s il vous plais, j ai pas encore bien attribuer les mots technique.

    qu elle solution pour ne pas avoir a modifier le code si c est le cas, sinons bas pas grave je modifie si il faut, je voudrais être sur avant de faire quoi que ce soit.

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Il y a 2 versions d'asio, une version prévue pour être intrégrée à boost et qui est donc dans l'espace de noms 'boost' (c'est cette version qui est distribuée avec boost depuis la version 1.35) et une autre version non-boost (donc effectivement pas dans l'espace de noms 'boost').
    Les deux versions sont côte à côte dans la section de téléchargement et il ne faut pas se tromper...

    Apparemment (et bizarrement) le tutoriel semble utiliser la version non-boost.

    MAT.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Points : 96
    Points
    96
    Par défaut
    Ok, je commence a comprendre, donc si je veux que çà fonctionne je ne fait pas :

    Mais


    c est bien çà ou je me trompe encore ?

  10. #10
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Normalement oui.

    Tu n'as qu'à essayer et tu sauras de suite.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Points : 96
    Points
    96
    Par défaut
    Bon bas j ai tester et ca me dit que :

    error C2039: 'io_service'*: n'est pas membre de 'boost'
    Je pense que je vais installer la version non boost comme me le signaler Mat007

    et tester comme çà aussi .

  12. #12
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Non.

    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boost::asio::io_service

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Points : 96
    Points
    96
    Par défaut
    j ai essayer aussi comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boost::asio::io_service
    mais ca ne marcher pas, ca me met toujours que io_service n est pas membre de boost.

    j ai donc mis la version non boost et la ça a l aire d aller mieux.

    par contre je me suis rendu compte que je générer la solution en mode debug et l orque je le lance en mode release, ca passe mieux j ai une fenêtre console qui s ouvre mais j ai aussi une boite de dialogue qui s ouvre me parlant de:

    point d entrée introuvable le creatDevice introuvable dans la bibliothèque de liaisons dynamique Irrlicht.dll

    Pourquoi j ai des erreur en mode debug que je n est pas en mode release, c est qui la différence entre les 2 génération ?

    voila ca me met dans la sortie :

    'remote.exe'*: Chargé 'D:...\remote-console\remote.exe', Le fichier binaire n'a pas été généré avec les informations de débogage.
    'remote.exe'*: Chargé 'C:\WINDOWS\system32\ntdll.dll'
    'remote.exe'*: Chargé 'C:\WINDOWS\system32\kernel32.dll'
    'remote.exe'*: Chargé 'D:...\remote-console\Irrlicht.dll', Le fichier binaire n'a pas été généré avec les informations de débogage.
    'remote.exe'*: Chargé 'C:\WINDOWS\system32\advapi32.dll'
    'remote.exe'*: Chargé 'C:\WINDOWS\system32\rpcrt4.dll'
    'remote.exe'*: Chargé 'C:\WINDOWS\system32\secur32.dll'
    'remote.exe'*: Chargé 'C:\WINDOWS\system32\gdi32.dll'
    'remote.exe'*: Chargé 'C:\WINDOWS\system32\user32.dll'
    'remote.exe'*: Chargé 'C:\WINDOWS\system32\msvcrt.dll'
    'remote.exe'*: Chargé 'C:\WINDOWS\system32\opengl32.dll'
    'remote.exe'*: Chargé 'C:\WINDOWS\system32\glu32.dll'
    'remote.exe'*: Chargé 'C:\WINDOWS\system32\ddraw.dll'
    'remote.exe'*: Chargé 'C:\WINDOWS\system32\dciman32.dll'
    Débogueur:: Une exception non gérée et qui ne peut être continuée a été levée durant le chargement du processus
    Le programme '[3632] remote.exe: Natif' s'est arrêté avec le code -1073741511 (0xc0000139).

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Points : 96
    Points
    96
    Par défaut
    J ai essayer de mettre "Irrlicht.dl"l dans "C:\WINDOWS\system32\" et çà change rien.

    ou doit je mettre le dll de Irrlicht ?

    et ca veux dire quoi : "Le fichier binaire n'a pas été généré avec les informations de débogage." ?

    Merci pour vos réponse.

  15. #15
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Rien d'important pour toi, c'est juste que tu ne pourras pas débugguer Irrlicht, mais ce n'est pas ton objectif

    Ton problème est que tu cherches une fonction qui n'existe pas dans Irrlicht, cherche à savoir pourquoi

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Points : 96
    Points
    96
    Par défaut
    j arrive pas a trouve

    je n est normalement pas besoin de modifier le code vue que il est sensée compiler et se générer.

    cela vient du tuto que j ai trouve sur ce site : Architecture d'un jeu vidéo 3D

    j ai cette erreur quand je compile et elle se répète quand je génère la solution, çà veux dire quoi cette erreur comment je peux la résoudre ?

    c:\program files\boost\boost_1_35_0\boost\asio/detail/socket_types.hpp(27) : fatal error C1189: #error : WinSock.h has already been included
    j ai aussi cette erreur que je comprend pas ?

    c:\program files\microsoft visual studio 9.0\vc\include\elements/CEGUITreeItem.h(570) : warning C4251: 'CEGUI::TreeItem::d_listItems'*: class 'std::vector<_Ty>' nécessite une interface DLL pour être utilisé(e) par les clients de class 'CEGUI::TreeItem'
    with
    [
    _Ty=CEGUI::TreeItem *
    ]
    elle veux dire quoi cette erreur aussi ?

    Merci encore

  17. #17
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Le tutoriel date de plus d'un an, boost et asio ont évolué depuis...

    Citation Envoyé par dad72 Voir le message
    j ai cette erreur quand je compile et elle se répète quand je génère la solution
    On ne 'génère' pas une solution (enfin si on peut mais pas là non), c'est juste la phase d'édition des liens qui vient à la fin de la compilation pour rassembler tous les bouts et créer un binaire.

    Citation Envoyé par dad72 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c:\program files\boost\boost_1_35_0\boost\asio/detail/socket_types.hpp(27) : fatal error C1189: #error : WinSock.h has already been included
    çà veux dire quoi cette erreur comment je peux la résoudre ?
    Est-ce que tu inclus directement windows.h dans ton code (enfin dans le code copié-collé du tutoriel) ? Si oui ajoute un #define WIN32_LEAN_AND_MEAN juste avant pour voir.
    Sinon essaye de changer l'ordre des includes pour inclure asio en premier aussi pour voir.

    Citation Envoyé par dad72 Voir le message
    j ai aussi cette erreur que je comprend pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    c:\program files\microsoft visual studio 9.0\vc\include\elements/CEGUITreeItem.h(570) : warning C4251: 'CEGUI::TreeItem::d_listItems'*: class 'std::vector<_Ty>' nécessite une interface DLL pour être utilisé(e) par les clients de class 'CEGUI::TreeItem'
    with
    [
    _Ty=CEGUI::TreeItem *
    ]
    Ce n'est pas une erreur mais un 'warning', pour savoir ce que ça veut dire tu cliques dessus et tu appuies sur F1 (ou tu copies-colles C4251 dans une recherche google, ça fonctionne bien en général, par ex on trouve ça : http://www.unknownroad.com/rtfm/Visu...ningC4251.html ).
    A mon avis dans un premier temps tu ferais aussi bien d'ignorer ce warning...

    MAT.

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Points : 96
    Points
    96
    Par défaut
    Merci beaucoup de ta réponse.

    bon j ai réussi a régler quelque erreur.

    il est vrais que le tuto date d y a 1 ans, mais ca veux dire quoi, que le code et plus bon, le c++ change d une année sur l autre, mais si on fait un projet qui dure quelque année il faut chaque année modifier sont code, ces quoi les différence, normalement les version suivante sont des amélioration ou ajout, pas des changement radical, j ai du mal a comprendre.

    le tuto pourrais pas être mis a jour par l auteur çà serais pas mal parce que çà veux dire que personne ne peux le compiler aujourd'hui.

    la j ai encore des erreur il m en reste un e 10 ene si d autre ne vient pas apres.

    les erreur dans le .h
    archi\src\sound_engine.h(30) : error C2143: erreur de syntaxe*: absence de ';' avant '*'
    archi\src\sound_engine.h(30) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    archi\src\sound_engine.h(30) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    archi\src\sound_engine.h(19) : error C2065: 's_engine'*: identificateur non déclaré
    d:\jeu c++\bases jeux complet\archi\src\sound_engine.h(19) : error C2227: la partie gauche de '->play2D' doit pointer vers un type class/struct/union/générique
    le type est ''unknown-type''
    archi\src\sound_engine.h(22) : error C2065: 's_engine'*: identificateur non déclaré
    archi\src\sound_engine.h(22) : error C2227: la partie gauche de '->play3D' doit pointer vers un type class/struct/union/générique
    les erreur dans le .cpp
    le type est ''unknown-type''
    .\src\sound_engine.cpp(10) : error C2065: 's_engine'*: identificateur non déclaré
    .\src\sound_engine.cpp(12) : error C2065: 's_engine'*: identificateur non déclaré
    archi - 9 erreur(s), 0 avertissement(s)

    je vous montre les fichier

    sound_engine.h
    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #ifndef H__sound_engine__
    #define H__sound_engine__
     
    #include <irrKlang.h>
    #include <map>
    #include <string>
     
    #include "engine.h"
    #include "game.h"
     
    class sound_engine : public engine{
    public:
    	sound_engine(game*, bool);
    	~sound_engine();
    	void frame(){
    	}
     
    	inline void play_ambiance(std::string& s){
    		s_engine-> play2D (sound_names[s].c_str());
    	}
    	inline void play_spatial(std::string& s, irr::core::vector3df v){
    		s_engine-> play3D (sound_names[s].c_str(), v);
    	}
     
    	std::map<std::string, std::string> sound_names;
     
    	void process_event(engine_event&);
    protected:
    	void get_config_data();		
    	ISoundEngine* s_engine;
    	std::vector<std::string> playlist;
    };
     
    #endif

    sound_engine.cpp
    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    #include <boost/filesystem/operations.hpp>
     
    #include "sound_engine.h"
     
    using namespace irrklang;
     
    sound_engine::sound_engine(game* g, bool passif):engine(g){
    	passive_mode = passif;
    	if (passive_mode)
    		s_engine = createIrrKlangDevice(ESOD_AUTO_DETECT);	
    	else
    		s_engine = createIrrKlangDevice();
     
    	get_config_data();
    }
     
    sound_engine::~sound_engine(){
    	try{
    		//s_engine->drop();
    	}catch(std::exception&e){
    		std::cerr << e.what() << std::endl;
    	}catch(...){
    		std::cerr << "unknown exception handled in ~sound_engine" << std::endl;
    	}
    }
     
    void sound_engine::get_config_data(){
    	// creates the list of all the sounds
    	sound_names["clic"] = "./data/sound/clic.wav";
    	sound_names["gui_ambiance"] = "./data/sound/zik.mp3";
     
    	// creates the playlist
    	boost::filesystem::path dir("./data/sound/playlist");
    	boost::filesystem::directory_iterator i(dir), end;
     
    	for (; i!=end; i++){
    		if (boost::filesystem::is_directory("./data/sound/playlist/"+i->leaf()))
    			continue;
     
    		playlist.push_back("./data/sound/playlist/"+i->leaf());
    	}
    }
     
    void sound_engine::process_event(engine_event&){
     
    }

    j ai du mal a comprendre l histoire de l identificateur non déclarer, c est quoi l erreur ?

    je vous remercie encore pour vos lumière.

  19. #19
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Citation Envoyé par dad72 Voir le message
    j ai du mal a comprendre l histoire de l identificateur non déclarer, c est quoi l erreur ?
    Il faut commencer par regarder la toute première erreur qui est donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    archi\src\sound_engine.h(30) : error C2143: erreur de syntaxe*: absence de ';' avant '*'
    J'imagine que la ligne 30 est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ISoundEngine* s_engine;
    L'erreur signifie en l'occurence que le type ISoundEngine est inconnu (le message n'est pas très clair, la partie importante est "avant '*'" ).
    Il manque soit un include soit plus vraisemblablement une déclaration anticipée.

    MAT.

Discussions similaires

  1. Spécificateur de type manquant + erreur de syntaxe
    Par JackJnr dans le forum Débuter
    Réponses: 4
    Dernier message: 10/10/2013, 10h27
  2. Réponses: 0
    Dernier message: 17/09/2010, 10h47
  3. Réponses: 8
    Dernier message: 01/08/2009, 16h31
  4. Réponses: 1
    Dernier message: 12/05/2009, 09h43
  5. Réponses: 4
    Dernier message: 04/03/2003, 01h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo