关于Cocos2d-x很多奇怪的报错

1.说什么找不到类和命名空间,但是已经包含头文件

项目-属性-配置属性-C/C++-附加包含目录-编辑-添加新行-写上$(EngineRoot)

2.很多语句报错,但是都没问题

我是这样理解的,书上的代码的编码格式是UTF-8,而我们新建的cocos2d-x的解决方案是用GKB编码打开的,如果直接把文件拷贝过去,文件的编码和解决方案(整个环境)的编码不对,这时候编译起来就会各种错误。

文件-高级保存选项-保存为UTF-8有签名的页面

每个文件的编码格式要一样,不然会报错

其实更好的做法是

文件-高级保存选项-保存为UTF-8无签名的页面,行尾-Windows(CR LF),这么做可以顺便解决中文乱码问题。

3.很多语句莫名其妙报错

可能在一些.h文件里面忘记写USING_NS_CC;

或者一些头文件忘记包含了。

4.某个自己定义的类有红线

这个类可能和系统的类名重复了,改个名字就可以了

5.Cocos2d-X的3.0以后的版本

ccTouchesBegan要改为onTouchesBegan

ccTouchesMoved要改为onTouchesMoved

ccTouchesEnded要改为onTouchesEnded

6.Cocos2d-X的3.0以后的版本

要把CCLayer之类的父类改为Layer

要把CCNode之类的父类改为Node

7.Cocos2d-X的3.0以后的版本

CCSizeMake要改为Size

8.Cocos2d-X的3.0以后的版本

AppDelegate.cpp里面的applicationDidFinishLaunching方法要这样定义

bool AppDelegate::applicationDidFinishLaunching() {
  // initialize director
  auto director = Director::getInstance();
  auto glview = director->getOpenGLView();
  if(!glview) {
    glview = GLViewImpl::createWithRect("See", Rect(0, 0, 960, 640));
    director->setOpenGLView(glview);
  }

  director->getOpenGLView()->setDesignResolutionSize(960, 640, ResolutionPolicy::SHOW_ALL);

  // turn on display FPS
  director->setDisplayStats(true);

  // set FPS. the default value is 1.0/60 if you don't call this
  director->setAnimationInterval(1.0 / 60);

  FileUtils::getInstance()->addSearchPath("res");

  // create a scene. it's an autorelease object
  auto scene = HelloWorld::createScene();

  // run
  director->runWithScene(scene);

  return true;
}

8.Cocos2d-X的3.0以后的版本要把资源放在Resources文件夹下的Res目录里面,或者直接放在Resources文件夹的根目录下并且根目录下不能有Res文件夹

是受了AppDelegate.cpp里面的applicationDidFinishLaunching方法的这句话的影响

FileUtils::getInstance()->addSearchPath("res");

9.可能是已经在.h文件中定义类型的变量,在.cpp中又用auto定义了一遍,这个会造成系统输出:读取位置 0x0000039C 时发生访问冲突等错误,有时候也会造成运行游戏项目的时候弹出停止运行的框框。

.h文件中

Sprite  *confirm;

.cpp文件中

auto confirm = Sprite::create();

解决方法:

去掉多余的auto关键词

原文地址:https://www.cnblogs.com/HangZhe/p/5496974.html