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

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

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值