页眉文件无法访问

时间:2016-10-23 03:34:28

标签: c++ cocos2d-x header-files

我正在使用cocos2d-x来创建我的项目,但是我收到了这个错误:

  

错误(活动)“CocosDenshion :: SimpleAudioEngine :: SimpleAudioEngine()”   (在“c:\ MyGame”第256行声明   \ cocos2d \ cocos \ audio \ include \ SimpleAudioEngine.h“)是   无法访问MyGame c:\ MyGame \ Classes \ MyGame .cpp

所以我将SimpleAudioEngine.h文件包含在我的CPP文件中,以便使用它。从错误中可以看出,要使用SimpleAudioEngine,我需要首先使用CocosDenshion命名空间,但是一旦输入完成,我就会:

CocosDenshion::SimpleAudioEngine()

Visual Studio向我显示此错误,VS可以向我显示声明,因此告诉我它知道标头的位置并且可以读取。所以我不知道无法访问的问题是什么。头文件无法访问的原因是什么?

  

MyGame.cpp

#include "MyGame.h"
#include "SimpleAudioEngine.h"
#include "GlobalVariables.h"

USING_NS_CC;

Scene* MyGame::createScene()
{
    auto scene = Scene::create();
    auto layer = MyGame::create();
    scene->addChild(layer);
    return scene;
}

bool MyGame::init()
{
    if (!Layer::init())
    {
        return false;
    }
    is_dragged = false;

    const char* MUSIC_PATH = "Music/Main_Theme_loop.ogg";
    initTouch();
    initTiled();
    tempSetupSprite();

    debugDrawLine();

    this->scheduleUpdate();
    return true;
}
  

MyGame.h

#include "GameSprite.h"
#include "GameMap.h"

class MyGame : public cocos2d::Layer
{
private:
    void update(float dt);
    void initTouch();
    void initTiled();

    void tempSetupSprite();
    void debugDrawLine();
public:
    static cocos2d::Scene* createScene();

    virtual bool init();

    virtual bool onTouchBegan(cocos2d::Touch* _touch, cocos2d::Event* _event);
    virtual void onTouchEnded(cocos2d::Touch* _touch, cocos2d::Event* _event);
    virtual void onTouchMoved(cocos2d::Touch* _touch, cocos2d::Event* _event);
    virtual void onTouchCancelled(cocos2d::Touch* _touch, cocos2d::Event* _event);

    CREATE_FUNC(MyGame);
private:
    bool is_dragged;

    Vec2 first_touch;
    Vec2 last_drag_touch;

    GameSprite* sprite;
    GameMap* map;
};

2 个答案:

答案 0 :(得分:0)

查看cocos2d-x(http://www.cocos2d-x.org/reference/native-cpp/V3.5/de/d8f/class_cocos_denshion_1_1_simple_audio_engine.html)的文档。构造函数受到保护。您必须使用以下方法来获取共享静态简单音频引擎实例:

getInstance() 

答案 1 :(得分:0)

检查" cocos2d.h"你会发现" SimpleAudioEngine.h"不包括在这里。因此,当您尝试使用它时,必须先将其包含在内。

通过VS查找头文件并不意味着可以在cpp文件中访问该文件。它只是VS提供的一个方便的功能,让用户可以轻松检查文件。