Unity3D中C#调用iOS的静态库(*.a)

https://blog.csdn.net/skylin19840101/article/details/51039176

C#端的处理

C#调用其他模块的接口都是通过DllImport的方式来实现的。

首先导入名字空间

using System.Runtime.InteropServices;

声明需要使用的C接口

[DllImport("__Internal")]
    private static extern void __init (string appid);

[DllImport("__Internal")]
    private static extern void __setVersion (string version);

iOS库的处理

在iOS的工程中定义相应的C接口,并导出

#ifdef __cplusplus
    extern "C" {
    #endif   
        
        extern void __init(const char *appId);
        
        extern void __setVersion(const char *version);
        
    #ifdef __cplusplus
    }
    #endif

注意:unity调用Xcode封装的函数,声明时需要用extern "C";

但在实际的使用过程中,遇到一个奇怪的问题:

在OC SDK中,定义了一个 __setUseTestAddr()接口

U3d工程中使用如下:

但在unity3d工具中运行的时候,总是提示找不到方法的错误

如果直接build成xcode工程,又能正常运行。

经过查找资料,以及请教同事,终于发现问题的所在,需要添加一个真机平台的判断,因为调用的是iOS的静态库,必须在iPhone环境下才能运行,直接在U3D工具中跑是不行的

#if UNITY_IPHONE || UNITY_IOS
        if(Application.platform == RuntimePlatform.IPhonePlayer){
            __setUseTestAddr(true);
        }
    #endif
————————————————
版权声明:本文为CSDN博主「skylin19840101」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/skylin19840101/article/details/51039176

Unity3D中C#调用iOS的静态库(*.a)相关推荐

  1. iOS架构-静态库.a 和.framework的区别(0)

    原文网址:https://my.oschina.net/kaqijiang/blog/649632 一.什么是库? 库是共享程序代码的方式. 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存 ...

  2. iOS架构-静态库.a打包之资源文件打包成bundle(4)

    iOS架构-静态库.a的打包及使用(一) iOS架构-静态库.a的脚本化打包及使用(二) 资源文件主要包括:xib.图片以及其他文件资源(json.string等).这里主要介绍 xib.图片.其他的 ...

  3. iOS架构-静态库.framework脚本化打包补充(5)

    静态库.framework脚本化打包打包已经在iOS架构-静态库.framework手动打包及脚本化打包(5)中讲过.这里补充是通过Xcode 配置Aggregate自动执行脚本打包Framework ...

  4. iOS架构-静态库.a之依赖第三方静态库.a的制作(8)

    上一篇讲的是静态库.framework 依赖第三方库,是通过Cocoapod 提供的第三方库.而有时我们会依赖第三方.a 或者.framework 的.那么怎么样来制作依赖第三方.a 或者.frame ...

  5. iOS架构-静态库.framework之依赖第三方库(7)

    需求分析:     把自己的能力封装成静态库提供给客户使用,但是有些工作市场上已经有很好的公开的代码,或者成本很低的解决方案,我们就可以使用别人公开的.或者低成本采购的技术来为我们服务.制作静态库也是 ...

  6. iOS架构-静态库.framework之资源文件打包bundle(6)

    iOS架构-静态库.framework手动打包及脚本化打包(5)中介绍了.framework的脚本化打包,虽然在iOS架构-静态库.a打包之资源文件打包成bundle(4)中已经演示过,其实是一样的. ...

  7. iOS架构-静态库.framework手动打包及脚本化打包(5)

    引用一张博客的图片来理解下基本知识(http://www.cnblogs.com/oc-bowen/p/7478461.html) 我们可以看出.a的封装和.framework的封装差不多,也有模拟器 ...

  8. iOS架构-静态库.a的脚本化打包及使用(3)

    接着iOS架构-静态库.a的打包及使用(一)继续研究静态库.a的打包 需求背景: 手动编译静态库工程是会生成模拟器和真机两个不同的.a包 终端合成 $:lipo -create 真机.a路径 模拟器. ...

  9. Linux中gcc的编译、静态库和动态库的制作

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 Linux中gcc的编译.静态库.动态库 文章目录: 1 gcc的编译过程 1.1 gcc的编译过程 1.2 gcc的常用参数 2 gcc 静态库的制 ...

最新文章

  1. LightOJ - 1265 概率
  2. Lucene教程--维护索引、查询对象和相关度排序
  3. CG-CTF-Web-文件包含
  4. Ios9 html5,ios9,html5_ios9下在浏览器中通过scheme打开app的问题,ios9,html5 - phpStudy
  5. android xml中设置水平虚线及竖直虚线
  6. 推荐一个配置linux服务的网站
  7. input 输入事件_输入超时为例学习 Python 的线程和协程
  8. vue-awesome-swiper:依赖于6.X版本Swiper时轮播分页器下方小圆点不显示
  9. 群体智能优化算法之蚁群优化算法(ACO)
  10. 2021年各省高考试成绩查询,2021年各省高考成绩查询时间 什么时候出分
  11. 安全生产知识竞赛答题小程序
  12. QT widget宽高比
  13. 【2022刷题】受伤的皇后
  14. 给一个年份输出该年是否举办足球世界杯的信息,以及给一个国家的名称输出是否夺得过世界杯冠军
  15. 坦克大战的网络对战实现C++(客户端+服务端)
  16. png转bmp,png批量转成bmp
  17. linux运行崩溃怎么定位,Linux 程序崩溃定位
  18. 【CF235C】Cyclical Quest(后缀自动机)
  19. LVGL系列(四)概述 之 位置、尺寸和布局
  20. 郑州大学计算机系1996级校友,公共管理学院成功举办96级公共关系专业学生毕业20周年返校活动...

热门文章

  1. linux的自动挂载
  2. 微信抢红包的方案_微信抢红包方法图文详解
  3. Vivi 专访欧阳默|Web3投资的机遇与挑战
  4. git push的时候报错:error: src refspec xxxxx does not match any. 错误原因和解决方法
  5. 记录我删库没跑路的处理方式
  6. Android开发学习之基于ZBar实现微信扫一扫
  7. URLConnection HttpURLConnection 网络请求
  8. 金山词霸字典转换工具
  9. Electron打包React构建桌面应用
  10. 混合云解决方案:统一化、简化、创新化