C#端的处理
C#调用其他模块的接口都是通过DllImport的方式来实现的。
首先导入名字空间
using System.Runtime.InteropServices;[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
本文介绍如何在Unity中通过DllImport调用iOS静态库的方法,并解决因未正确配置平台导致的调用失败问题。
2866

被折叠的 条评论
为什么被折叠?



