开发腾讯移动游戏平台SDK ios版Ane扩展 总结

开发腾讯移动游戏平台SDK ios版Ane扩展 总结

本文记录了在开发 腾讯移动游戏平台SDK(MSDK) ios版Ane扩展 过程中所遇到的问题

文中非常多问题都是基础的问题、对object c和xcode配置了解不深入导致的。(没办法,开发ane的程序猿大部分都是做ActionScript的,一般对c/c++都没有开发经验)

问题一、编译报错:Unexpected ‘@’ in program

代码例如以下:
@try{
}
@catch{
}
原因是高版本号xcode代码放在低版本号xcode下跑,低版本号ios 不支持这样的写法(ios 7.0编译正常),须要改动设置ios Deployment Target属性
假设要支持安装在低版本号的ios上,则不能用这样的写法—-待确认??

 

问题二、c++代码和object-c混合编译,会报错:Cannot use ‘@try’ with Objective-C exceptionsdisabled

解决的方法:改动target -> build settings -> All | Combined -> Apple LLVMCompiler 5.0 – Language – Objective C 中 EnableObjective-C Exceptions 为YES

 

问题三、编译报错 instance method ‘-AddList:’ not found (returntype defaults to ‘id’)

原因1:没有import .h文件,仅仅通过 @class file 方式引用了文件,解决方法是 把文件import进来
例http://blog.csdn.net/liuyuyefz/article/details/8189210

原因2:实例方法和静态方法搞错了

 

问题四、项目移植到还有一个版本号ide后编译报错

Unsupported compiler ‘com.apple.compilers.llvmgcc42’ selected forarchitecture ‘armv7’
Unableto determine concrete GCC compiler for file/Users/flash8/Desktop/app/TencentMSDKAneIOS/TencentMSDKAneIOS/TencentMSDKAneIOS.mof type sourcecode.c.objc.
原因是xcode版本号不同,编译器不一样了,解决方法:
设置 Build Settings-> Build Options -> Compiler for C/C++/Objective-C 选择DefaultComplier (Apple LLVM 5.1)

 

问题五、打包时报错:ld: framework not found AdSupport

原因是platformoptions.xml中未加入�在上加入�AdSupportframework,注意(低于IOS 6.0系统须要在xcode中设置为Optional)
<option>-frameworkAdSupport</option>

 

问题六、打包时报错:-[GDataXMLElement attributeForName]……一大段

原因是platformoptions.xml中未加入�在上加入�libxml2
<option>-lxml2</option>

 

问题七、打包时报错:

Undefined symbols for architecture armv7:  
 “_TencentMSDKAneIOSExtInitializer”,referenced from:
     _g_com_adobe_air_fre_fmap in extensionglue.o
     (maybe you meant:_TencentMSDKAneIOSExtInitializer_name)
 “_TencentMSDKAneIOSExtInitializer”,referenced from:
     _g_com_adobe_air_fre_fmap in extensionglue.o
     (maybe you meant:_TencentMSDKAneIOSExtFinalizer_name)
 ld:symbol(s) not found for architecture armv7
Compilationfailed while executing : ld64
找了好久,一直怀疑是类库漏了或配置错误,后来发现原因是 c++把函数名翻译了(这个项目包括c++代码)
解决的方法是在头文件里用extern c把那两入口函数包住
#if__cplusplus
extern”C” {
#endif
void *TencentMSDKAneIOSExtInitializer();
void *TencentMSDKAneIOSExtInitializer();
#if__cplusplus
}  // Extern C
#endif
參考链接:http://stackoverflow.com/questions/7376003/linker-error-using-extern-c-in-objective-c-code

问题八、#import<vector> 编译时提示错误“vector.h file not found”

原因是项目中引入了C++ STL里的vector.h文件,编译器的配置不正确,改动例如以下配置就可以:
1. 选择project -> build setting -> apple LLVM compiler 3.0 – language配置项,
2. 将Compile Sources As设置项改动为Objective-C++。

【原文链接:http://blog.csdn.net/linguifa/article/details/25741807/  转载请注明出处】

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119041.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm 命令行_pycharm叫什么

    pycharm 命令行_pycharm叫什么一、pycharm常用命令1全局查找/替换某个字符串ctrl+shift+r2当前文件查找某个字符串ctrl+f3当前文件替换某个字符串ctrl+r4全局查找指定文件名的文件ctrl+shift+n5全局查找指定类名的类ctrl+n二、pycharm常用操作1获取当前文件对应的项目的树形目录结构所在位置点击左侧项…

    2022年8月29日
  • 滑动窗口算法学习

    滑动窗口算法学习最近做了几道有关滑动窗口的算法,在此总结一下。滑动窗口就像描述的那样,可以理解成是一个会滑动的窗口,每次记录下窗口的状态,再找出符合条件的适合的窗口可以使用滑动窗口来减少时间复杂度经典滑动窗口题目给一组大小为n的整数数组,计算长度为k的子数组的最大值比如:数组{1,2,3,4,5,7,6,1,8},k=2,那么最终结果应该是7+6=13最大。最简单的是使用两层遍历,通过所有情况找…

    2022年10月24日
  • 结构性设计模式-适配器模式+桥接模式

    结构性设计模式-适配器模式+桥接模式

    2021年7月13日
  • java8 list转换对象_Java8将List对象转换Map「建议收藏」

    java8 list转换对象_Java8将List对象转换Map「建议收藏」基于Java8的函数式编程概念,去实现List转换MappublicclassDemoMian2{publicstaticvoidmain(String[]args){ListusersList=newArrayList();Usersusers=newUsers();users.setId(1L);users.setName(“张三”);users.setSex(…

    2022年5月16日
  • 为什么百度查到的ip和ipconfig查到的不一样;详解公网Ip和私网ip;详解网络分类ABC;

    为什么百度查到的ip和ipconfig查到的不一样;详解公网Ip和私网ip;详解网络分类ABC; IP可以分为PublicIP和PrivateIP,出现这种规划的原因在于IPv4所能表示的IP太少而电脑太多以至于不够用,然而只有PublicIP才能直接连接上网络,所以对于那些公司,学校,政府机构等场所,就可以集中使用私有的IP进行管理,而大家可以共用一个IP去连接上公网,这样,就省下了许多宝贵的PublicIP。你有没有发现,你每次使用ipconfig查到的地址,要么就是172….

    2022年6月6日
  • 自动化测试框架[Cypress PO模式]

    自动化测试框架[Cypress PO模式]【附源码】在Cypress中并不认为PO是个很好的模式,Cypress认为跨页面共享逻辑是一个反模式(Anti-Pattern),在Cypress中,它提供了很多方式,允许用户通过更简单的方式直接设置被测应用程序达到的待测试状态,不需要再不同页面一遍又一遍的执行相通操作

    2022年6月1日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号