博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity3D中C#调用iOS的静态库(*.a)
阅读量:4108 次
发布时间:2019-05-25

本文共 824 字,大约阅读时间需要 2 分钟。

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_IOS	if(Application.platform == RuntimePlatform.IPhonePlayer){		__setUseTestAddr(true);	}#endif

你可能感兴趣的文章
内容里面带标签,在HTML显示问题,JSTL
查看>>
VS编译器运行后闪退,处理方法
查看>>
用div+css做下拉菜单,当鼠标移向2级菜单时,为什么1级菜单的a:hover背景色就不管用了?
查看>>
idea 有时提示找不到类或者符号
查看>>
ng-class的几种用法
查看>>
node入门demo-Ajax让前端angularjs/jquery与后台node.js交互,技术支持:mysql+html+angularjs/jquery
查看>>
神经网络--单层感知器
查看>>
注册表修改DOS的编码页为utf-8
查看>>
matplotlib.pyplot.plot()参数详解
查看>>
拉格朗日对偶问题详解
查看>>
MFC矩阵运算
查看>>
最小二乘法拟合:原理,python源码,C++源码
查看>>
ubuntu 安装mysql
查看>>
c# 计算器
查看>>
C# 简单的矩阵运算
查看>>
gcc 常用选项详解
查看>>
c++输入文件流ifstream用法详解
查看>>
c++输出文件流ofstream用法详解
查看>>
字符编码:ASCII,Unicode 和 UTF-8
查看>>
firewalld的基本使用
查看>>