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
- Unity3D中C#调用iOS的静态库(*.a)
- Unity3D中C#调用iOS的静态库(*.a)
- Unity3D中C#调用iOS的静态库(*.a)
- Unity3D教程:静态调用C#的dll
- iOS 静态库a文件的打包 中
- iOS中静态库.a、资源库.bundle、.framework的区别
- c#中静态成员与非静态成员的调用
- iOS中打包.a静态库
- iOS中打包.a静态库
- iOS中打包.a静态库
- iOS中打包.a静态库
- 如何在unity3D的C#中调用libsqlite3(完整代码)
- Unity3D中js与C#之间相互调用的解决办法
- Unity3D中使用C#调用C++编写的DLL
- RoboVM和libGDX的绑定[用java调用ios的静态库.a]
- 静态库(*.a)的调用举例
- Unity3d接入IOS的调用
- Unity3D中C#调用C++动态库总结
- JAVA中创建对象的四种方式
- JAVA中static关键字的解读
- Arduino简单实例之七_红外遥控接收
- android studio 无法debug
- Android中Mock以及Mockito的使用
- Unity3D中C#调用iOS的静态库(*.a)
- svn 清理失败 (cleanup 失败) 的解决方法
- Windows环境下Qwt安装和使用
- JSTSP2016 Fully Deep Blind Image Quality Predictor
- 在Sublime3中使用ESLint
- Git 撤销合并
- Linux常用命令记录
- python基本语法和编程风格
- Field 'id' doesn't have a default value