前言:
目的是创建一个mfc的工程,然后在其中使用cocos2dx的引擎实现绘图功能。
1、创建一个cocos2dx工程,cocos new -l cpp
2、在其中添加一个MFC的工程,如下图CocosMFC是一个MFC工程,路径如图所示(尽量按照这个路径,因为后面要使用它)MFCDemo是一个cocos2dx生成工程。
咱们仿照MFCDemo这个工程来让CocosMFC这个工程能调用cocos2dx的功能。
3、添加属性页。在MFCDemo目录下搜索*.props 文件,我们需要的是cocos2d_headers.props与cocos2dx.props两个,将这两个文件拷贝到CocosMFC目录里。
,然后将这两个属性页添加到CocosMFC工程中,在属性管理器视图中添加如图:
3、定义EngineRoot宏。
这个属性页中已经存在这个宏了,但我们要对她进行修改,让他对应的目录为上面路径中的cocos2d,$(MSBuildThisFileDirectory) 指向的就是属性页所在路径。
CocosMFC 的输出目录修改为$(SolutionDir)$(Configuration).win32\ 因为所有生成的库文件都放在那个目录里,后面我们会用到
5、拷贝附加包含目录。(找不到在哪儿学学vc怎么用)
将MFCDemo的附加包含目录拷贝到CocosMFC对应位置。我们目的就是移植嘛。
6、拷贝附加库目录及附加依赖库
将MFCDemo的对应设置拷贝到CocosMFC对应位置。我们为什么需要先设置下输出目录,因为下面就用到。所有的库都被生成到$OutDir下了。所以需要先设置OutDir.
7、拷贝预定义宏。C++》预处理器
8、拷贝禁用的警告。C++》高级
9、将classes下的文件添加到CocosMFC 工程中,我们要使用它绘制窗口嘛。
10、设置CocosMFC 的依赖项。
11、这个时候编译通过应该是没有问题的了,但是链接还是不行。
最后发现是依赖库不够,缺少cocos2dx 等库。加入这三个引用项就可以链接通过了。
12、在MFC中调用cocos2dx。在OnInitiDialog中加入如此调用。当然要加上对应的头文件及使用cocos2dx命名空间。参照自动生成的cocos2dx工程中main.cpp的调用。
AppDelegate app; Application::getInstance()->run();
13、这个时候我们发现原来编译通过的又编译错误了。小鬼作怪?不是,淡定分析我们找到了原因。
CCApplicationProtocol.h这个文件中
enum class Platform { OS_WINDOWS_32,OS_LINUX,OS_MAC,OS_ANDROID,OS_IPHONE,OS_IPAD,OS_BLACKBERRY,OS_NACL,OS_EMSCRIPTEN,OS_TIZEN,OS_WINRT,OS_WP8 };原来代码此处是OS_WINDOWS,这个貌似在什么地方被定义成一个宏了(应该是shlwapi.h),那么此处枚举的时候OS_WINDOWS就变成0了,我们知道0是不能当描述符的。所以编译失败导致后面的一大排失败。怎么改呢?。两种方法
1、在此处之前加#undef OS_WINDOWS 取消宏的定义。
2、将此处OS_WINDOWS修改一下,如变成上面的OS_WINDOWS_32 ,但对应工程中使用到这个枚举的地方也要相应改变。
14、到此就功德圆满了。