Cocos2d-x V2.x版本对64bit的支持

转自:http://www.cnblogs.com/meteoric_cry/p/4171535.html

2015年2月1日后新提交的应用必须要支持64位架构。

我所使用的是cocos2d-x V2.0版本,而且源码有部分代码是修改过的。好在cocos2d-x官方已经放出了一个支持64位的2.2.6版本,可以做为参考。

iOS 64-bit support for v2.x>>

zip包下载>>

在修改之前,有必要了解一下32位与64位的一些区别,网上能搜索到的资料有很多,这里简单列一下(尽量通过图表的方式)

I代表int、L代码Long、P代表Pointer

通过上图,大家很容易就发现主要的不同点在long与pointer上

参考资料:

32位程序与64位程序区别

将 Linux 应用程序移植到 64 位系统上

64位编程的33条军规

linux GCC 64位编程技巧

20 issues of porting C++ code on the 64-bit platform

-------------------- 华丽的分隔线 --------------------

还有一些准备工作需要做,升级Mac OS,然后安装XCode 6.x,只有6.x才支持IOS8.x,然后设置build的选项。

然后command + b进行build,如果报错,查看报错的信息然后使用cocos2d-x 2.2.6版本里面的代码与当前使用的代码进行对比,修改完成之后再次build

第三方库:libcurl记得替代,如果你还使用了其它的库,记得也一并替换掉。

在编译的过程中遇到的绝大部分的问题都能通过搜索获得到答案 :)

上面这个过程相对而言比较简单,对于自已写的代码,如果有函数需要获得指针的信息,把 int 改为 long 即可 (原理可参见本文的第一张图)

我遇到的主要问题是

Undefined symbols for architecture arm64: 
"CocosDenshion::SimpleAudioEngine::preloadEffect(char const*)", referenced from:

凡是调用了CocosDenshion里方法的代码都会显示有问题,我就奇怪了,CocosDenshion我检查过编译的各项参数,也检查过当前编译项目的Library Search Path,确认所有的都没有问题,清理、重新编译,闹腾了好久还是没解决,直到第二天猛然看到这段错误上面一段提示,有一个路径,我用shell查了一下,发现了问题:

该目录下面居然有一个.a文件,不知道怎么操作的,也就是说它优先使用了这里的库(32位),导致无论我怎么编译和操作,新生成的静态库(libCocosDenshion.a)都是没有用到的,删除、编译,一切都OK了,太坑了,花了一天半的时间>_<

下面引用一段关于Undefined symbols for architecture 的说明(网上能搜索到关于它的问题不是armv7(s)就是使用cocos2d-x V3.x的处理方案,关于cocos2d-x的几乎是没有,好忧伤~ ~)

如果在源代码中,找不到一个标识符的声明,无论是变量名、类名或是方法名,则在编译时会得到“Use of undeclared identifier ‘XXXX‘”错误,而如果编译器找到了它的声明,而却不知道它怎么实现的,看不到实现代码或者说目标文件里没有这个实现,则会出现链接错误。

错误分类:

1)   引入了需要用到的库的头文件,却没有链接正确的实现库。因为Xcode本身所支持的库是Static Library,即.a方式,.a文件里只有实现。使用的时候需要另外引入头文件,那么就有可能把头文件放进来,没有放.a或放了错误的版本。

2)  Build Settings或者Build Phases配置有误。检查Build Phases里的Link Binary With Libraries和Build Settings里的几项Search Path。

3)  从外部导入的文件没有加入到特定的target中。.a、.m、.framework等引入到工程中,却没有勾选当前Build的target,会出现这个问题,可以选中特定的文件,在右侧边栏中选中target。

4)  未包含处理器架构指令集的问题。报错时的提示一般都是“Undefined symbols for architecture armv7/arm64”之类的,而“for architecture armv7/arm64”就是说没有支持armv7,在build settings里architecture相关的几项需要配置正确。

引用自:http://www.molotang.com/articles/1593.html

原文:http://stackoverflow.com/questions/6429494/undefined-symbols-for-architecture-armv7

参考:

I was able to build the cocos2d-x 2.2 in arm64 (Xcode 6.1) #9322

64-bit and iOS 8 Requirements for New Apps

XCode升级到5.1.1(5B1008)导致编译出问题的解决方案

修改cocos2d-2.0-x-2.0.3支持c++11

error when creating an archive of my cocos2d app

xcode升级6.0.1之后Undefined symbols for architecture arm64

时间: 2024-10-05 01:21:15

Cocos2d-x V2.x版本对64bit的支持的相关文章

RDIFramework.NET ━ .NET快速信息化系统开发框架钜献 V2.9 版本震撼发布

RDIFramework.NET ━ .NET快速信息化系统开发框架钜献 V2.9 版本震撼发布 全新体验.全新感觉.2015钜献! 继上个版本“RDIFramework.NET V2.8版本发布”5个多月的时间,V2.9版本面世了,感谢各位的支持.欲了解2.8版本新增与更新的内容可以查看下面的链接地址,此文就不再展示2.8版本中的特色了. RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本发布 1.RDIFramework.NET框架介绍 RDIFramewo

RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本发布

(新年巨献) RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本发布 历时数月,RDIFramework.NET V2.8版本发布了,感谢大家的支持. RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,为企业或个人在.NET环境下快速开发系统提供了强大的支持,开发人员不需要开发系统的基础功能和公共模块,框架自身提供了强大的函数库和开发包,开发人员只须集中精力专注于业务部分的开发,因此大大提高开发效率和节约开发成本.框架采用目前最主流的

RDIFramework.NET V2.9版本多语言的实现

RDIFramework.NET V2.9版本多语言的实现 现在是国际化时代,软件也不能落后.一个公司里很可能会有老外,也可能有台湾的朋友,他们用软件的习惯都不一样,若同样一个软件同时能适应多种语言文化,那是想当的理想了,最起码能比较完善的支持英文版本,大家用起来也会舒服一些. RDIFramework.NET框架中的多语言包,目前是按XML文件的方式进行组织,方便用户自由定义语言包.XML 语言包的好处主要就是客户修改起来容易,直接用记事本就可以修正了,没必要又重新编译源码啥的,非常省事.我们

使用FMDB最新v2.3版本教程

使用FMDB教程 本教程针对于第一次接触开源库FMDB的同胞,从如何下载源码如何导入工程如何创建数据库如何写增删改查开始.使用的时最新版本的FMDB v2.3. 此教程开始日期为 2014.5.5 Preparation - 准备工作 首先,你得需要去下载源码  https://github.com/ccgus/fmdb 找到页面中的如是地方后下载ZIP包. 解压ZIP包后找到src文件夹 进入文件夹后,将文件夹extra以及fmdb拷贝到你新建的工程文件(默认开启ARC,本人已经不玩non-A

RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本━新增岗位管理-Web部分

RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本 新增岗位管理-Web部分 岗位(职位)管理模块主要是针对组织机构的岗位(职位)进行管理,包括:增加.修改.删除.移动.对岗位设置用户,设置岗位的权限等.岗位管理在企业应用中是一个普遍应用的模块,也属于其他业务应用的基础,特别是在业务流程的流转过程中经常会用到.合理的组织与规划组织机构下的岗位,对后期的管理可以起到事半功倍的效果. 登录系统后,选择“岗位管理”可以进入岗位管理模块. 岗位(职位)管理模块主界面如下

RDIFramework.NET V2.9版本 WinFom部分新增与修正的功能

RDIFramework.NET  V2.9版本 WinFom部分新增与修正的功能 转眼间RDIFramework.NET框架走了快6个年头了,随着一个版本一个版本的升级改造,现在已经越来越完美了.使用的客户也越来越多,经受住了大量实战项目的考验! RDIFramework.NET V2.9 WinForm版在2.8的基础上增加与修正了大量功能.包括:对多语言的支持.模块操作权限项设置.增加起始页(对常用功能列表在起始页展示).新增新的字典字典管理界面,提供对“树”类型的数据字典的展示.增加“数

RDIFramework.NET V2.8版本 ━ 开发实例之产品管理(WinForm)

RDIFramework.NET V2.8版本 ━ 开发实例之产品管理(WinForm) 现在,我们使用.NET快速开发整合框架(RDIFramework.NET)来开发一个应用,此应用皆在说明如何使用框架简单快速的进行开发,整合.在这里我们要开发一个产品管理的功能模块,在开发前,我们需要进行数据库的设计,在这儿为了简单说明,我们只涉及到了一张产品表.CASE_PRODUCTINFO(产品信息表) 序号 列 名 数据 类型 长 度 小数 位 标 识 主 键 允许 空 默认值 说 明 1 ID i

RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本━新增企业通(内部简易聊天工具)

RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本 新增企业通(内部简易聊天工具) RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案. "企业通"是RDIFramework.NET框架提供的一个即时通讯.内部聊天沟通的工具.虽不能与商业化专业的沟通工具相比,但对于框架内部进行消息的沟通还是比较方便的.成功登录框架后,点击框架主菜单"辅助工具"→"企业通&

iNeuOS工业互联平台,开放设备驱动管理、服务驱动管理、云组态自定义画布等,促进平台开放、赋能和落地。发布:v2.3版本。

目       录 1.      概述... 2 2.      iNeuOS平台演示... 2 3.      设备驱动管理... 2 4.      服务驱动管理... 3 5.      云组态自定义画布... 4 6.      快速切换组态页面菜单... 5 7.      自定义右键菜单项,显示组态子页面... 5 8.      工况关联数据点... 6 9.      修改用户密码... 6 1.   概述 现在iNeuOS正式版本的演示平台已经有350多个注册用户,一部分注册