mre应用和Native的交互之增加mre sdk接口
经常碰到mre sdk功能不够完善的情况,没有实现功能的API,这个时候怎么办呢?在mtk 的Native端(也就是CodeBase里)增加接口,扩展到mre的sdk中。下面是扩展mtk Mre sdk接口的具体步骤。现在以vm_extra_add(int a, int b),这个接口为例,扩展这个接口,将接口定义在native端,然后再mre应用中调用之。类似的,如果要将mtk native端其他的函数扩展到mre应用中调用,都类似的可参考。
1、增加接口,找到native端 mre\engine\framework下的Vmpromng.c,在里面增加如下函数
VMINT vm_extra_add(VMINT a, VMINT b)
{return a + b;
}
2、native端扩展接口,找到Vmpromng.c中的VMINT vm_get_sym_entry(char* symbol)函数,其实很多mre的接口都在这里扩展,可以看到类似下面的代码
if(strcmp(symbol,"vm_pn_is_support") == 0)return (VMINT)vm_pn_is_support;if(strcmp(symbol,"vm_pn_get_global_setting") == 0)return (VMINT)vm_pn_get_global_setting;if(strcmp(symbol,"vm_pn_reg") == 0)return (VMINT)vm_pn_reg;if(strcmp(symbol,"vm_pn_dereg") == 0)return (VMINT)vm_pn_dereg;
这其实就是扩展接口,根据symbol的值,返回不同接口的地址,现在要增加vm_extra_add接口,则增加如下line 5-6代码,remake一下。
if(strcmp(symbol,"vm_pn_is_support") == 0)return (VMINT)vm_pn_is_support;if(strcmp(symbol,"vm_pn_get_global_setting") == 0)return (VMINT)vm_pn_get_global_setting;if(strcmp(symbol, "vm_extra_add") == 0)return (VMINT)vm_extra_add;if(strcmp(symbol,"vm_pn_reg") == 0)return (VMINT)vm_pn_reg;if(strcmp(symbol,"vm_pn_dereg") == 0)return (VMINT)vm_pn_dereg;
3、在mre应用中使用新增加的vm_extra_add接口,以下是mre2.0的使用新增接口的使用,只需保证MRE_ENTRY("vm_extra_add");中的红色字体和if(strcmp(symbol, "vm_extra_add") == 0)中红色字体一致即可获取出函数地址。
#include "vmsm.h"typedef VMINT (*VmExtraAdd)(VMINT a, VMINT b);void vm_extra_add_test()
{VmExtraAdd* vm_extra_add = NULL;int a = 1, b = 2, c;vm_extra_add = (VmExtraAdd)MRE_ENTRY("vm_extra_add");if(NULL != vm_extra_add){c = vm_extra_add(a, b);}
}
当然Mre 1.0的使用接口方法会有点不同,看下面的代码
#include "vmsm.h"typedef VMINT (*VmExtraAdd)(VMINT a, VMINT b);
extern vm_get_sym_entry_t vm_get_sym_entry;void vm_extra_add_test()
{VmExtraAdd* vm_extra_add = NULL;int a = 1, b = 2, c;vm_extra_add = (VmExtraAdd)vm_get_sym_entry("vm_extra_add");if(NULL != vm_extra_add){c = vm_extra_add(a, b);}
}
mre应用和Native的交互之增加mre sdk接口相关推荐
- mre应用和Native的交互之消息传递
mre应用和native的新增API接口可以实现mre单方面的调用native的代码,那如何实现native端调用mre里面的接口呢?比如现在来电话了,mre应用里面就对应的有些逻辑要处理,来电话了是 ...
- 【记录】python多线程的使用 线程同步(LOCK和RLOCK) python与mysql数据库交互实现增加和查找 python的格式化输出
文章目录 多线程: _thread模块 threading模块: 线程同步(LOCK和RLOCK) 和mysql交互: 附:python的格式化输出 附录 多线程: _thread模块 例一 impo ...
- usb扩展坞同时接键盘鼠标_这个多功能扩展坞,增加多个接口,笔记本秒变工作站...
原标题:这个多功能扩展坞,增加多个接口,笔记本秒变工作站 为了给笔记本电脑"减负" 越做越薄,接口也是越来越少 很多接口功能都被省去 ... 可是想接入的设备却有很多:鼠标.U盘. ...
- dcloud html5 sdk,DCloud H5与Android Native的交互--5+ SDK插件开发
DCloud 5+ SDK插件开发 http://ask.dcloud.net.cn/docs/#http://ask.dcloud.net.cn/article/66 开发文档的链接 首先官方文档这 ...
- PC软件/web网站/小程序/手机APP产品如何增加个人收款接口
接入前准备 通过 XorPay 注册个人收款接口,原理是帮助你签约支付宝和微信(不需要营业执照)支持个人支付宝和个人微信支付接口,大概几分钟可以开通,开通后即可永久使用 PC 网站接入 效果:用户点击 ...
- Unity3d与iOS交互开发—接入平台SDK必备技能
开发 手机游戏都知道,你要接入各种平台的SDK.那就需要Unity3d与iOS中Objective-C的函数有交互,所以你就需要用到如下内容: 一.Unity3d To iOS: 1.创建一个C# ...
- Lua封装增加九宫Sprite接口
封装接口,增加九宫拉伸图片添加Sprite,支持removeTag替换 function AddScale9Sprite(png, pos, rect, innerRect, contentSize, ...
- Unity3D 与 objective-c 之间数据交互。iOS SDK接口封装Unity3D接口
原地址:http://www.cnblogs.com/qingjoin/p/3638915.html Unity 3D 简单工程的创建.与Xcode 导出到iOS 平台请看这 Unity3D 学习 创 ...
- 新浪sea增加php,php接口 连接新浪云sea的mysql数据库
自己写的时候采用了两种方式,都可以连接到新浪云sea mysql数据库数据取数 Hello, SAE! '; //echo "用户名:" .SAE_MYSQL_USER." ...
最新文章
- zoom:1是什么意思
- 491. Increasing Subsequences 递增子序列
- 使用PLSQL developer编辑数据
- 分布式锁-常用技术方案
- 伯颜的诗和“金佛”趣事
- scala 单元测试_Scala中的法律测试简介
- Mysql 查询返回结果空时间错误
- PSIM软件学习---06 元件参数文件应用
- 「动手学深度学习」在B站火到没谁,加这个免费实操平台,妥妥天花板
- android 页面icon拉伸_页面转场: 忽略它可能会使你犯错
- c++语言“case”,C++ switch case详解
- linux 运行asf云挂卡,来点牛逼的,只用一条命令,ASF使用NAS群晖轻松挂卡,比图形界面还简单!...
- 紫光集团赵伟国:拒绝资本高手标签 做好科技产业重炮手
- PNG图像文件格式解析
- 2021!四川省科学技术厅开展瞪羚企业申报条件材料
- 阿里巴巴的“双11”高并发秒杀终极版教程(Java语言设计)
- 论文写作-引言怎么写
- 走进英特尔大连工厂,看英特尔存储技术赋能数据未来
- linux获取中括号内容,shell里使用正则表达式提取括号中的内容
- 刚刚,低调的DataVisor发布了“高调”的新产品“DCube”……
热门文章
- Fortran学习杂记(一)
- Ivan the Fool and the Probability Theory(思维+dp)
- TEAMCENTER更换许可证
- 网站频繁被挂马篡改 防止网站被攻击的解决妙招
- ambari报错总结01_李孟_新浪博客
- 计算机主板上的部件有哪些,主板上各部件有哪些
- MOXA 串口服务器的使用心得
- asp php主机空间域名注册
- php 富文本编辑器 UEditor 的使用,参数配置(保存图片路径)
- android 按home键 activity生命中周期,Android Activity 生命周期全解析