quick cocos2dx 3.x 配置win32工程

公司项目主体部分用c++,而ui部分用lua写,所以选择了用quick框架。项目先开发了ios/mac版,这两天试着配置其win32工程,遇到一些问题,记录一下(纯c++版本cocos2dx配置方法应该也是类似的)。

先配debug模式:

把c++文件都添到工程中去,并在附加包含目录下配置c++文件的搜索路径。然后编译会遇到一些问题:

一,win32下fullPathForFilename函数与ios/mac下行为不一致的问题。

fullPathForFilename当传入的参数是文件夹路径时,ios/mac下与win32下行为不同。

在ios/mac下fullPathForFilename如果传入的参数是文件夹路径且路径存在,就能返回正确的全路径。但在win32下,如果传入的参数是文件夹路径,则将原样返回传入的参数。

由于项目中使用了fullPathForFilename来获得文件夹全路径,所以在ios/mac下正常,而在win32下得不到正确结果。解法见:http://www.cnblogs.com/wantnon/p/4295876.html

二,找不到pdb调试信息error。

将 属性-> C/C++ -> 常规 ->调试信息格式 设置为 C7 兼容(/Z7)。

三,拷贝资源脚本。

此时程序能正常启动了,但运行过程中会因找不到资源而崩溃,原因是一部分资源没有出现在 工作目录$(OutDir)../../../../runtime/win32 之下,事实上 工作目录 本来是空的,是在程序编译过程中的某一阶段,资源被从其所在的文件夹下被拷贝到 工作目录 下。可以在 属性->生成事件->预先生成事件->命令行 中看到如下脚本:

if not exist "$(LocalDebuggerWorkingDirectory)" mkdir "$(LocalDebuggerWorkingDirectory)"

mkdir "$(LocalDebuggerWorkingDirectory)\src"
mkdir "$(LocalDebuggerWorkingDirectory)\res"
xcopy "$(ProjectDir)..\..\..\src" "$(LocalDebuggerWorkingDirectory)\src" /e /Y
xcopy "$(ProjectDir)..\..\..\res" "$(LocalDebuggerWorkingDirectory)\res" /e /Y
copy "$(ProjectDir)..\..\..\config.json" "$(LocalDebuggerWorkingDirectory)\config.json" /Y

可以进入到编辑对话框,然后点“宏(M)>>”打开宏列表来查看$(LocalDebuggerWorkingDirectory)和$(ProjectDir)的定义。

xcopy和copy的区别:xcopy可以复制目录和文件,copy只复制文件。

在quick cocos2dx中lua文件默认放在"$(ProjectDir)..\..\..\src"下,资源文件默认放在"$(ProjectDir)..\..\..\res”下。

在我们的项目中,有一部分资源没有按此规范放到"$(ProjectDir)..\..\..\res”下,而是放到了自己的目录myRes下,因此需要自己添加脚本实现将这部分资源拷贝到 工作目录,添加下面两句即可:

mkdir "$(LocalDebuggerWorkingDirectory)\myRes"
xcopy "$(ProjectDir)..\..\..\c3dToolKit\toolKitRes" "$(LocalDebuggerWorkingDirectory)\myRes" /e /Y

此时debug下可以正确运行了。

再配置release模式:

同样按上面方法配置release模式后发现无法正常运行。

四,.c文件报错

一些纯c写成的第三方库,例如sqlite3.c等文件会报一些语法错误,例如 void*不能隐式转化为char*, 在结构体A内部定义的结构体B在外部使用时如果不写成struct A::B而仅写成struct B则找不到定义 等。产生这些错误的原因显然是编译器按照c++的标准去编译c了,当然将这些.c文件中的c语法改写为c++是可以解决问题的,但由于如sqlite3.c这样的大文件需要修改的地方实在太多,所以改成c++语法的方法不现实。后来发现在 属性->c/c++ ->高级->编译为 中可以选择“编译为c++代码(/TP)”或"编译为c代码(/TC)",而且这个属性是可以每个文件单独设置的,细看debug模式的设置,发现是整个工程的“编译为”属性设置为"编译为c++代码",而如sqlite3.c等纯c文件的“编译为”属性设置为“默认值”,另外整个工程的“强制包含文件”属性设置为“algorithm”,而如sqlite3.c等纯c文件的"强制包含文件"属性置空。(如果纯c文件的"强制包含文件"属性不置空,而设置为"algorithm"的话,会报 error C2054: 在“using”之后应输入“(” 的错误。)于是release模式下也照此设置,则问题解决。

五,error LNK2005: xxx已经在 lua51.lib(lua51.dll) 中定义。

对比debug和release的 属性->连接器->输入->附加依赖项,其中release下多了一个lua51.lib,而debug下没有这一项,将release下的lua51.lib去掉,就不再报此error。

六,“工作目录”和“命令”。

属性->调试->命令,属性->调试->工作目录,这两项release与debug配置不一样,由于debug配置已确信是可行的,索性将release配置改成与debug相同:

命令:$(OutDir)../../../../runtime/win32/$(TargetFileName)

工作目录:$(OutDir)../../../../runtime/win32

其中“命令”是可执行程序的路径,“工作目录”是资源目录。

通过查看宏值可以发现 $(LocalDebuggerWorkingDirectory) 与 工作目录 是保持一致的。

七,丢失dll的问题。

编译通过,但启动时弹出“无法启动此程序,因为计算机中丢失xxx.dll”报错。

是因为dll没拷贝到 工作目录 下。查看debug模式下的 属性->生成事件->后期生成事件,发现有下面脚本:

xcopy /Y /Q "$(OutDir)*.dll" "$(ProjectDir)..\..\..\runtime\win32\"

而release模式下却没有此段脚本,于是把同样的脚本添加到release模式下,问题即可解决。

八,项目及依赖项目release模式下编译优化设置。

通常debug模式下将编译优化全关掉即可。而对于release模式,由于目的是生成运行速度快的可执行程序,所以应将编译优化选项选为“使速度最大化”,另外不要忘记检查各依赖项目(libbox2d,libcocos2d,libluacocos2d,libSpine)的release模式是否也设置了“使速度最大化”,因为我发现我这个项目的release模式下各依赖项目的编译优化在默认情况下并没有设成"使速度最大化"。

时间: 2024-10-17 07:28:21

quick cocos2dx 3.x 配置win32工程的相关文章

[转帖]Cocos2d-x 3.0rc0 的Win32工程添加CocoStudio库

转自 http://www.cocoachina.com/bbs/read.php?tid=194668 前天, 在CocoaChina 2014春季大会上, 激动人心的Cocos2d-x 3.0和CocoStudio 1.3发布了. Cocos2d-x 3.0做出令人兴奋的性能, 易用性等一系列改进, CocoStudio 1.3带来了稳定性和新特性. 今天让我们看下如何在新建Cocos 3.0rc0的Win32的工程中添加CocoStudio的支持.  一 软件及其下载  1. Cocos2

给新建的Cocos2d-x 3.X的Win32工程添加CocoStudio库

1.我们在VS中找到"解决方案资源管理器", 在解决方案"HelloCocos"上点击右键, 选择添加现有项目. 在弹出的对话框中选择*************\cocos2d\cocos\editor-support\cocostudio\proj.win32\libCocosStudio.vcxproj 然后继续添加*************\cocos2d\extensions\proj.win32\libExtensions.vcxproj 然后继续添加**

win7(x64)+VS2012+cocos2d-x环境的配置以及试运行

原地址:http://blog.csdn.net/gf771115/article/details/20740993 转自:http://blog.sina.com.cn/s/blog_62df69790101eob1.html Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程) 声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级后的cocos2d-x有了一些变化,目前的博文还没有关于Cocos2d

Mac下搭建quick cocos2d-x编译环境

前言 虽然之前已经写过了很多 Cocos2d-x 相关的教程和文档,但本次却是我第一次接触 Quick,第一次接触 Lua,所以此次的教程本人将站在一个初学者的角度(看到这里是不是想白眼我了,哈哈,别切啊!尽管第一次,但我身边可是有很多 Quick 大神的,廖大大也在旁边办公室,没准撒个娇大神就把他知道的全部要点倾囊相授了啦!),全方位的解析 Quick 的学习过程,并同大家一起学习如何利用 Quick-Cocos2d-x 开发一款属于自己的游戏,包教包会的哦. 好了,那么下面我们就开始进入正题

cocos2dx Windows环境配置

cocos2dx升级之旅,请多指教~ 本篇是本人搭建cocos2dx-Windows 64位环境的配置说明,仅供参考. 开发准备 搭建环境肯定需要准备好所有工具,只有把工具都准备好了,才能撸起袖子干活,但是肯定被cocos官网提供的软件数目和分布的零散不堪的开发环境准备文档整的没有头绪.下面我们来理清一下思路. 1.python 2.7.X环境 cocos2dx的许多配置都是通过python来使用,因此万分紧急的是搭好python环境,而且cocos2d-x目前来说只支持到Py2.X版本(本人使

Win7+VS2010+cocos2d-x 2.1 Beta3+Sqlite工程向android平台移植

Win7+VS2010+cocos2d-x 2.1 Beta3+Sqlite工程向android平台移植 题外话: 有时打开博客想写点什么时,心中感到有点酸楚,尽管语言不那么精简,或者说是准确,而且很可能文中的总结极不成熟,甚至还夹带些错误:但是,它们毕竟是自 己经过"痛苦"的挣扎后取得的一点成绩,于是,还是下决心记下来,一方面充实了自己尘封的笔记,另一方面也不敢独享-因为我看到有那么多的朋友把自己的心 血也无保留地奉献出来.或许,我的这一点一滴也能成为他们决战BUGS中的LITTLE

Cocos2d-X 3.1.1创建工程的方法

由于cocos2d-x的更新,最新版本的创建工程方法又发生了变化,以下是cocos2d-x3.1.1在命令行下创建工程的方法. 首先下载 cocos2d-x3.1.1 ,python 2.7.(x)(最好是2.7的版本). 将 pyton安装目录 和 \cocos2d-x-3.1.1\tools\cocos2d-console\bin   配置到环境变量,不会的同学可以自己去百度怎么配置环境变量. 配置完成后,在命令输入cmd 进入 \cocos2d-x-3.1.1 目录下 然后输入: coco

Quick Cocos2dx 调试问题

最近由于忙了一段时间,忙完了之后又迷茫了这么久,然后终于开始继续Quick-x的学习之路了. 然后遇到了一个比较棘手的问题. 虽然照着官方mvc的例子敲代码,但是还是不停的报错,报错的问题下次集结成一个帖子发出来好了. 今次记录的是对于错误的DEUG方面的问题. 我的首选当然是Eclipse + LDT了,因为从业是自java而始,继而是AS,用得最熟的莫过与FB了. 参考的是官方的文章: 用 Eclipse LDT 调试 quick-cocos2d-x 游戏 但是,进行到配置player的时候

Cocos2d-x游戏开发之lua工程创建

操作系统:OS X 10.85 Cocos2d-x 版本: 2.2.1 使用Cocos2d-x 可以创建lua工程,已经使用cpp创建的工程也可以继承lua进行开发,但是lua并不支持mac工程(因为一些框架的问题). 支持的工程文件如下: 所有使用创建工程create.py language 为cpp的工程,后集成lua及其工具的时候,要注意这一点. 撒 现在进入cocos2d-x 目录之下,通过cd 进入文件目录 进入之后,如果忘记了命令,可以直接运行 create_project.py 如