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
Développeur HPC
Inscrit enjuillet 2005Messages9 810Dé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
Points20 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.
Développeur HPC
Inscrit enjuillet 2005Messages9 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
Points20 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.