添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
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);
		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.
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 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)
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 :
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''
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. 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.
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
Profil pro
Développeur HPC
Inscrit en
juillet 2005
Messages
9 810
Détails du profil
Informations personnelles :
Âge : 41
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 967
Points
20 967
Visualiser dans une fenêtre à part
asio::io_service io;
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. 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.
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). 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.
Profil pro
Développeur HPC
Inscrit en
juillet 2005
Messages
9 810
Détails du profil
Informations personnelles :
Âge : 41
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 967
Points
20 967
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 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\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'
_Ty=CEGUI::TreeItem *
elle veux dire quoi cette erreur aussi ?
Merci encore 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.
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'
_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...
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);	
		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.
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.
error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas Par zuzuu dans le forum Visual Studio Réponses: 0 Dernier message: 17/09/2010, 10h47

Vous avez un bloqueur de publicités installé.

Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.

Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.