将Cocos2dx 3.4 嵌入到MFC中
来源:互联网 发布:邮政储蓄网络培训学院 编辑:程序博客网 时间:2024/05/16 11:05
前言:
目的是创建一个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) 指向的就是属性页所在路径。
4、修改输出目录OutDir
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、到此就功德圆满了。
- 将Cocos2dx 3.4 嵌入到MFC中
- 将KlayGE嵌入到MFC
- 将MFC dll中的窗口嵌入到工程窗口中
- 将opencv图像嵌入到MFC控件中
- 将Cocos2dX渲染到MFC窗口上
- 将Cocos2dX渲染到MFC窗口上
- 第一部分:将GOOGLE MAP嵌入到MFC的对话框程序中
- 第二部分:将MPLAYER 嵌入到MFC的对话框程序中
- CEF3自研究笔记 三、将CEF嵌入到MFC对话框程序中去
- 将cef3嵌入到mfc对话框中,当程序退出时报错,怎么解决?
- 将opencv的窗口嵌入到MFC的picture control中
- mfc嵌入cocos2dx示例工程
- 怎样将FCKeditor嵌入到jsp中
- 将Google Talk嵌入到网页中
- 将ogre 嵌入到 Qt中
- 将manifest嵌入到应用程序中
- 将ogre 嵌入到 Qt中
- 将ogre 嵌入到 Qt中
- 开发问题及解决 E/AndroidRuntime(15377): Caused by: java.lang.InstantiationException: can't instantiate clas
- Python开源项目大全
- LeetCode Climbing Stairs
- 用js 过滤脚本的正则
- 解决“Dynamic Web Module 3.0 requires Java 1.6 or newer.”错误
- 将Cocos2dx 3.4 嵌入到MFC中
- 导出mysql数据表 Monxin专用(PHP代码函数)
- android 帮助文档 下载源码
- Mac 系统忘记用户登录秘密
- 人最重要的能力是什么?
- Java实现RSA算法加密和解密的效率问题(问题描述)
- VS2005 中动态链接库引入库的设置方法
- Java面试题集(181-185)
- 发送邮件 Monxin专用(PHP代码函数)