社区
Android
帖子详情
【急!!高分求思路】Java应用与其链接的C库之间的通信
kigy
2010-10-20 01:53:37
Hi, 兄弟姐们:
我这边有个Android应用,称之为A, 其链接了一个C语言写的协议库,称之为B吧,B要与远程进行通信;
如果A要调用B提供的功能,这很简单,B只要暴露几个API给A调用就可以了。
但是问题是,如果反过来,B某些时候要主动通知A去做某些事,那该怎么做呢?对Java不是很熟悉,求解啊!
万分感谢!!!
...全文
51
2
打赏
收藏
【急!!高分求思路】Java应用与其链接的C库之间的通信
Hi, 兄弟姐们: 我这边有个Android应用,称之为A, 其链接了一个C语言写的协议库,称之为B吧,B要与远程进行通信; 如果A要调用B提供的功能,这很简单,B只要暴露几个API给A调用就可以了。 但是问题是,如果反过来,B某些时候要主动通知A去做某些事,那该怎么做呢?对Java不是很熟悉,求解啊! 万分感谢!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kigy
2010-10-20
打赏
举报
回复
我已经知道方法了,还是非常感谢楼上的参与。
贴上方法:
A.1.3 传递和使用Java对象
在前例中,我们将一个字串传递给固有方法。事实上,亦可将自己创建的Java对象传递给固有方法。
在我们的固有方法内部,可访问已收到的那些对象的字段及方法。
为传递对象,声明固有方法时要采用原始的Java语法。如下例所示,MyJavaClass有一个public(公共)字段,以及一个public方法。UseObjects类声明了一个固有方法,用于接收MyJavaClass类的一个对象。为调查固有方法是否能控制自己的自变量,我们设置了自变量的public字段,调用固有方法,然后打印出public字段的值。
class MyJavaClass {
public void divByTwo() { aValue /= 2; }
public int aValue;
}
public class UseObjects {
public static void main(String [] args) {
UseObjects app = new UseObjects();
MyJavaClass anObj = new MyJavaClass();
anObj.aValue = 2;
app.changeObject(anObj);
System.out.println("Java: " + anObj.aValue);
}
private native void
changeObject(MyJavaClass obj);
static {
System.loadLibrary("UseObjImpl");
}
}
编译好代码,并将.class文件传递给javah后,就可以实现固有方法。在下面这个例子中,一旦取得字段和方法ID,就会通过JNI函数访问它们。
JNIEXPORT void JNICALL
Java_UseObjects_changeObject(
JNIEnv * env, jobject jThis, jobject obj) {
jclass cls;
jfieldID fid;
jmethodID mid;
int value;
cls = env->GetObjectClass(obj);
fid = env->GetFieldID(cls,
"aValue", "I");
mid = env->GetMethodID(cls,
"divByTwo", "()V");
value = env->GetIntField(obj, fid);
printf("Native: %d\n", value);
env->SetIntField(obj, fid, 6);
env->CallVoidMethod(obj, mid);
value = env->GetIntField(obj, fid);
printf("Native: %d\n", value);
}
网站推广优化yetaoaiueo
2010-10-20
打赏
举报
回复
赶紧学jni吧
基于vue+Springboot的网上书城与其对应的后台管理系统源码+sql数据
库
+项目说明(
高分
毕设).zip
【资源说明】 基于vue+Springboot的网上书城与其对应的后台管理系统源码+sql数据
库
+项目说明(
高分
毕设).zip 网上书城前台部分 # 预览图 * 1-1 商城主页  获取书籍信息并分页显示 * 1-2 收藏夹页面  读取用户收藏夹并显示 * 1-3 欢迎页  * 1-4 登录页   * 1-5 注册页  网上书城后台管理部分 # 预览图 * 1-1 书籍管理页面  普通管理员实现书籍增删改查 * 1-2 信息录入页面  录入书籍信息及书籍封面 * 1-3 用户管理页面  超级管理员实现用户增删改查 * 1-4 角色管理   超级管理员实现角色增删查以及管理对应角色的菜单权限 * 1-5 菜单管理  超级管理员实现页面菜单的增删改查 使用技术 # 前端 * Vue: 渐进式
Java
Script 框架。 * element-ui: 基于 Vue 2.0 的桌面端组件
库
。 * axios:基于promise网络请
求
库
,作用于node.js和浏览器中。 # 后端 * Springboot框架 * JWT:为了在网络
应用
环境间传递声明而执行的一种基于JSON的开放标准,一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。 * Lombok:一个
Java
库
,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除
Java
类中的大量样板代码。 * MyBatis:基于
Java
的持久层框架。 * Mybatis-plus:MyBatis (opens new window)的增强工具。 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、
通信
工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
idata95v开发源码扫描抢
本开发源码包主要是针对idata95扫描枪开发的源码包,里面包含通过iscan服务广播模式收集条码及二维码的全开发样例子。
guia_basica_imagenes_satelitales-(1).rar_通讯编程文档_PDF_
guia basica sobre imagenes satelitales
最完整的
Java
必备主流技术流程图,值得收藏!(1),2024最新
Java
面试题目解答
这份《“
java
高分
面试指南”-25分类227页1000+题50w+字解析》同样可分享给有需要的朋友,感兴趣的伙伴们可挑战一下自我,在不看答案解析的情况,测试测试自己的解题水平,这样也能达到事半功倍的效果!(好东西要大家一起看才香)一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!一个人可以走的很快,但一群人才能走的更远。
基于
Java
的GPS地图显示系统开发实战
JSI 是一个专为高效空间查询设计的
Java
库
,常用于索引大量地理要素(如道路、建筑物)。它基于R-tree算法实现空间索引,适用于快速查找某区域内所有POI点:// 创建RTree实例// 插入带边界的地理对象// 查询指定范围内的对象.toList()参数说明定义矩形边界框;RTree支持响应式编程风格,.search()返回Observable流;强制同步获取结果列表。
Android
80,475
社区成员
91,389
社区内容
发帖
与我相关
我的任务
Android
移动平台 Android
复制链接
扫一扫
分享
社区描述
移动平台 Android
android
android-studio
androidx
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章