cocos2dx ext使用环境问题

今天有个小伙伴在cocos2dx自带的HelloWorldCpp中,添加使用cocos2dx 的九宫格图支持的功能时,遇到了一系列问题,想想也奇怪,在添加之前工程能够正常跑起来,代码也是参考TestCpp里拷过来的,在拷过来之前也能正常运行,纠结了大半天,一直没有找到最终解决办法,主要问题是两个:

1、知道九宫格是引入哪一个头文件,可是引入之后报错,找不到对应的文件;

2、解决了头文件找不到的问题之后,能编译了,又出现链接错误;

出现两个问的根本原因,还是在于对引擎项目架构不熟悉以及对Visual Studio特点不是很了解

整理了一下cocos2dx使用ext遇到这两个问题的解决步骤,也记录一下,方便后面可以直接给自己、给他人看看

首先要引入的头文件是cocos-ext.h,然后一般跟cocos还有一个单独的命名空间,同样引入使用,具体代码如下 

#include "cocos-ext.h"
USING_NS_CC_EXT;

这时如果是在HelloCpp工程上改的话,那么就会出现头文件找不到咯,当然平常我们搭建项目时,绝大部分都是通过拷贝HelloCpp工程,然后在它的基础上去改,这样可以减少很多项目配置的工作,然而helloCpp在跟cocos2dx完整项目TestCpp是有挺多区别的。

第一个问题,实际上就是项目的C++附加包含目录设置问题,也就是include的目录,使用ext对应的目录就没有,小伙伴用的九宫格就需要有$(ProjectDir)..\..\..\..\extensions,这个是需要我们手动去添加修改的,

在项目上右键,选择属性-->配置属性-->C/C++-->常规-->附加包含目录-->点击,有下拉选择编辑,添加我们需要的附加项,添加之后,如下图

附加项添加

第二个错误,实际是vs链接工程里,没有找到对应的链接库

报的错如下:

HelloWorldScene.obj : error LNK2019: 无法解析的外部符号 "public: static class 
cocos2d::extension::CCScale9Sprite * __cdecl 
cocos2d::extension::CCScale9Sprite::create(char const *)" 
(?create@CCScale9Sprite@extension@cocos2d@@SAPAV123@PBD@Z),
该符号在函数 "public: virtual bool __thiscall HelloWorld::init(void)" 
(?init@HelloWorld@@UAE_NXZ) 中被引用

 对比TestCpp,我们也能发现实际上,缺的就是libExtensions.lib

添加上,即可以正常链接了。

步骤如下:在项目上右键,选择属性-->配置属性-->链接器-->输入-->附加依赖项,点击有下拉框,选择编辑

将libExtensions.lib加上就可以了,

最终如下图:



 

完成之后,项目就能正常运行了。

猜你喜欢

转载自qiang106.iteye.com/blog/2346863
今日推荐