Cocos2dx+lua打包wp8教程
研究了2周,终于研究出来,绝对原创,请转载的说明出处,这个内容可能有点长,但是如果你按照教程走,则一定会成功的,下面来说步骤:
一:开发环境和SDK
Win8
操作系统:这里在官网上下载企业版或者专业版,因为这两个版本才支持Hyper-V
服务;
windowsphone SDK8.0
;
vs2012
或者vs2013
:如果你的真机用的操作系统是window phone 8.1,那么你的vs2012
要更新update
,但是我这里建议用vs2013
,就懒得更新了;
Cocos2dx3.0
:官网下载;
quickv3
:地址为https://github.com/dualface/v3quick
,因为我是模仿quickv3
来打包的,所以你可以下载下来研究一下,后面会讲;
真机:这里我用的操作系统为8.1
;
二:真机测试
1.
调试前的准备:
首先你必须是微软开发者账号(现在是免费的),现在的微软的账号(就是你安装win8 操作系统的时候叫你输入的账号)和开发者账号需要绑定的;
主要是手机上要下载“用于开发人员的预览”这个软件,然后安装就行了,可以参考http://jingyan.baidu.com/article/ff42efa9193fb8c19e22020b.html
;
2.
模拟器调试:
我这里没用模拟器调试,因为我的机子不支持虚拟化支持,如果要开启的话,你只需要打开bios
设置就行了,所以就没用模拟器调试;
3.
真机调试:
下载好cocos2dx3.0
以后,打开build
文件下的cocos2d-wp8.vc2012.sln
,然后选择cpp-tests
文件夹,然后把项目cpp-tests
设置为启动项目。
这时也要把模拟器设置device,平台设置为arm
:
然后运行看是否成功,如果能在真机上跑的话,恭喜你测试成功;
当然这里有可能调试遇到一个问题,就是指定的通信端口已经由另外一个程序使用,原因是你的手机原来用过真机调试并且通过了的,在手机上面有测试的项目,那么你就把它删除就行了;
三:打包到wp8
方法尝试并最终成功:
这里我尝试了多种方法,但是最终那一种成功了。
1.
首先我先想的是到底打包成静态库还是动态库,当时就查了一下他们之间的区别,我这里先就我说看的总结一下:
创建静态库:建立win32
,然后生成,参考http://www.cnblogs.com/skynet/p/3372855.html
;
使用静态库(也叫静态链接库):
http://www.cnblogs.com/skynet/p/3372855.html上面有方法,或者使用“#pragmacomment(lib,”xxx,lib”);
这时需要将静态库lib
拷贝到工程目录下”,静态链接库的特点是:拷贝,不能增量更新;
创建动态库:参考http://www.cnblogs.com/skynet/p/3372855.html
;
使用动态库(动态链接库):这里有2
种方法:这里有dll
库和lib
,这里的lib
和静态库的lib
不一样,等会发几个参考链接;
第一种方法:载入时动态链接(隐式调用,静态调用dll
):#pragmacomment(lib,lib”);
还有一个extern “C”
;
第二种方法:运行时动态链接(显示调用,动态调用dll
):
某个函数加载dll,调用完后释放,主要用LoadLibrary.
这里给几个网站:
http://www.cnblogs.com/skynet/p/3372855.html,http://www.cppblog.com/codejie/archive/2009/09/24/97141.html,
http://blog.csdn.net/wallaceli1981/article/details/5740718,
http://blog.sina.com.cn/s/blog_72b1bc6a0101cnu7.html,
http://blog.sina.com.cn/s/blog_725dd1010100ug2z.html,
http://blog.csdn.net/crich_moon/article/details/6039939,
当然这里讲的是win32
上的;
2.
然后静态库和动态库的区别我搞清楚了,然后我想的是怎么来把cocos2dx
所以的库打包成wp8
的库参考文章:
http://www.cnblogs.com/leluyun/archive/2012/09/28/2707564.html
http://www.devdiv.com/Windows_Phone-WP8%E6%96%B0%E7%89%B9%E6%80%A7%E3%80%908%E3%80%91Windows_Phone_8%E7%95%8C%E9%9D%A2%E8%B0%83%E7%94%A8%E4%B8%80%E8%88%ACDLL%EF%BC%8C%E9%9D%9ERuntime_Component%E6%96%B9%E6%B3%95-thread-135252-1-1.html
http://www.devdiv.com/Windows_Phone-wp_metro_app_c_native_dll-thread-134611-1-1.html
总结了大致过程
大致的调用过程为:C# Phone Application=>windows phone 运行时组件=>windowsphone 空静态库或者空动态链接库;
这时我想到的第一种方法是先建立
windows phone
空静态库,
然后把cocos2dx
所以的源代码拷贝到里面去(后来发现quickv3
就是这样做的),但是太多了,就没做。
然后我这时把cocos2dx3.0
建立的c++
项目打开发现有wp8
的分支,而且除了liblua
库其余所有的库都有wp8
的包,那么我就只打liblua
库成wp8
就行了。
所以我打开打开build 文件下的cocos2d-wp8.vc2012.sln ,然后选择cpp-empty-test 文件夹,然后在cocos2d-x-3.0testscpp-empty-testproj-wp8-xaml 文件下面添加了一个文件夹liblua 文件夹,然后右键点击cpp-empty-test 文件夹,添加项目,选择 空静态库,位置在刚刚建立的liblua文件夹下面:
但是这时编译运行遇到到很多问题,而且最大的问题是无法解析的外部符号(这个问题后面会解释的),这时我暂停了几天,又在网上问了一下,了解到quickv3
框架。
1.
这时我又尝试了另外一种方法:了解到quickv3
框架如果编码的话,主要是用lua
写的,而且http://cn.cocos2d-x.org/tutorial/show?id=1303
这个网址是说的怎么来建立quick
项目的。
然后项目建立成功后,生成的项目有wp8
的分支。但时这时quickv3
发现是用的cocos2dx3.2
来封装的,而我用的是cocos2dx3.0
,由于我现在的lua
代码的框架都写好了,所以就懒得改,而且用cocos2dx3.2
可能还有风险,至少3.0
稳定一些。
所以我当时想的是把cocos2dx3.0
的库直接替换掉libquickx
(quickv3
里面的一个项目)里面的库(就是把库的源代码替换掉),但是出问题了,quickv3
自己又多了一些封装,而且事件处理自己又封装了一些,所以这时候没法弄,还是没成功。
3.
这是我想到了第三种方法:我直接模仿quickv3
的libquickx
项目来做一个我自己的liblua
库,最终成功了,下面我来说一下过程和我遇到的问题:其实就是一些配置和路径的设置;
@1
:上面已经说了(
第三的第2
点)
先把liblua
项目建好,然后把liblua
项目设置成启动项目,
然在liblua
项目下面添加筛选器如下:
这是建立的项目:
然后在cocos2dx
项目把对应的文件夹找到源文件加入进来就行了;
auto
文件夹下的:cocos2d-x-3.0cocosscriptinglua-bindingsauto
lua 文件夹下的:cocos2d-x-3.0externallualua ( 这个很多,我只截取一部分) Manual 文件夹下的:cocos2d-x-3.0cocosscriptinglua-bindingsmanual script 文件夹下的:cocos2d-x-3.0cocosscriptinglua-bindingsscript tolua 文件夹下的:cocos2d-x-3.0externalluatolua
好,这里基本上添加完了,然后是配置
@2 :在liblua 这个项目中加入对cocos 其它库的依赖,右键点击liblua 项目,打开属性页,在通用属性下的框架和引用中
单击添加新引用:添加库的依赖,加了以后是这样的:
虽然库已经添加进来了,但是还应该有目录的,所以在“配置属性”下的“c/c++”目录下的“常规”选项中的“附加包含目录”添加: @5:这时把平台设置为ARM,并且把liblua项目设置为启动项目,运行,等待。。。。。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |