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

来源:互联网 发布:江苏微盛网络孙 编辑:程序博客网 时间:2024/05/01 02:57

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 __cplusplusextern "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_IOSif(Application.platform == RuntimePlatform.IPhonePlayer){__setUseTestAddr(true);}#endif
0 0
原创粉丝点击