zoukankan      html  css  js  c++  java
  • 开发腾讯移动游戏平台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/  转载请注明出处】

  • 相关阅读:
    iOS UITextField 设置内边距
    营造积极的OKR环境
    管理者的五项基本活动
    如何在团队中让OKR深入人心
    项目管理文化:营造积极氛围的里程碑
    OKR文化:用SMART原则量化目标
    成功落地OKR的要诀
    培养一支有 OKR 思想的管理团队
    如何成为一个成功的会议领导者
    项目管理文化:开展有效的总结会议
  • 原文地址:https://www.cnblogs.com/yxwkf/p/3839772.html
Copyright © 2011-2022 走看看