Ceci est collé à partir d'un site web, qui vraisemblablement fonctionnait. J'ai fait quelques recherches sur Google et j'ai trouvé que le problème que j'ai maintenant est le résultat de Visual C++ 2010 SP1, que j'ai téléchargé aujourd'hui, et qui me donne maintenant cette erreur :
PCH Warning: header stop cannot be in a macro or #if block.
J'espère que quelqu'un pourra m'aider à ce sujet !
#ifndef APP_STATE_H
#define APP_STATE_H
#include "Framework.h"
class AppState; //this line is giving me the error
//define two classes
#endif
Framework.h :
#ifndef OGRE_FRAMEWORK_H
#define OGRE_FRAMEWORK_H
#include <OgreCamera.h>
#include <OgreEntity.h>
#include <OgreLogManager.h>
#include <OgreOverlay.h>
#include <OgreOverlayElement.h>
#include <OgreOverlayManager.h>
#include <OgreRoot.h>
#include <OgreViewport.h>
#include <OgreSceneManager.h>
#include <OgreRenderWindow.h>
#include <OgreConfigFile.h>
#include <OISEvents.h>
#include <OISInputManager.h>
#include <OISKeyboard.h>
#include <OISMouse.h>
class OgreFramework : public Ogre::Singleton<OgreFramework>,OIS::KeyListener,OIS::MouseListener{
public:
OgreFramework();
~OgreFramework();
bool initOgre(Ogre::String wndTitle, OIS::KeyListener *pKeyListener = 0, OIS::MouseListener *pMouseListener = 0);
void updateOgre(double timeSinceLastFrame);
//OIS
bool keyPressed(const OIS::KeyEvent &keyEventRef);
bool keyReleased(const OIS::KeyEvent &keyEventRef);
bool mouseMoved(const OIS::MouseEvent &evt);
bool mousePressed(const OIS::MouseEvent &evt, OIS::MouseButtonID id);
bool mouseReleased(const OIS::MouseEvent &evt, OIS::MouseButtonID id);
Ogre::Root* mRoot;
Ogre::RenderWindow* mRenderWnd;
Ogre::Viewport* mViewport;
Ogre::Log* mLog;
Ogre::Timer* mTimer;
//OIS
OIS::InputManager* mInputMgr;
OIS::Keyboard* mKeyboard;
OIS::Mouse* mMouse;
private:
OgreFramework(const OgreFramework&);
OgreFramework& operator= (const OgreFramework&);
};
#endif
0 votes
Ce qui se trouve dans le
Framework.h
? Montrer le code.1 votes
Quel est ce fichier ? Et utilisez-vous Precompiled Headers ? Parce que c'est la signification de PCH. Vous avez un fichier StdAfx.h ? Nous avons probablement besoin de voir l'ensemble de votre include pour comprendre d'où vient l'erreur. Il semble qu'il y ait un bloc #if non verrouillé quelque part.
0 votes
BTW, si Framework.h inclut l'en-tête précompilé, cela peut très bien être l'erreur. Essayez de déplacer son inclusion en dehors de la garde de l'en-tête #if/#endif (ou utilisez un #pragma once à la place) et voyez ce qui se passe.
0 votes
Il n'y a pas d'en-tête précompilé ici. Voir l'édition pour Framework.h
0 votes
Quel est le fichier en cours de compilation ? Vous n'avez montré que deux fichiers d'en-tête, mais vous devez compiler un fichier cpp ? Quel est son contenu ? Il y a peut-être quelque chose avant
#include "AppState.h"
(devinez le nom ici !) qui est la cause de l'erreur ?2 votes
Il n'y a pas de fichier qui inclut AppState.h ici, sinon je l'aurais montré ! Et d'après une recherche plus approfondie sur Google, il s'agit d'un bogue dans Visual Studio, mais qui est résolu dès que l'en-tête problématique est inclus dans un fichier cpp, ce qui sera le cas. Si vous êtes intéressé, voici quelqu'un qui a décrit le problème mieux que moi et la réponse de Microsoft : connect.microsoft.com/VisualStudio/feedback/details/651405/
0 votes
Euh, d'accord, maintenant que le problème est résolu, qu'est-ce que je dois faire ? Y a-t-il un moyen pour moi de le fermer comme "résolu" ?