社区
Android
帖子详情
【急!!高分求思路】Java应用与其链接的C库之间的通信
kigy
2010-10-20 01:53:37
Hi, 兄弟姐们:
我这边有个Android应用,称之为A, 其链接了一个C语言写的协议库,称之为B吧,B要与远程进行通信;
如果A要调用B提供的功能,这很简单,B只要暴露几个API给A调用就可以了。
但是问题是,如果反过来,B某些时候要主动通知A去做某些事,那该怎么做呢?对Java不是很熟悉,求解啊!
万分感谢!!!
...全文
70
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吧
中兴软件类笔试A卷全解析:考点拆解、编程题
思路
与备考策略
在技术岗位的
求
职过程中,笔试往往是对候选人基础功底的第一次系统性检验。无论是
通信
设备厂商还是互联网公司,C/C++语言基础、数据结构、操作系统与计算机网络都是高频考察范畴,而
通信
行业笔试题还会额外突出嵌入式相关的底层概念,如指针操作、内存分区、大小端与位域等。理解这些核心原理,不仅有助于应对具体试题,更能帮助工程师建立从内存布局到协议解析的完整认知体系。从实际
应用
角度看,掌握结构体对齐、死锁计算、IP分片等知识点,是从事
通信
底层开发的基本素养。本文结合中兴软件类笔试题A卷的完整实战经历,系统梳理了客观题占比
QPDF
库
深度解析:C++ PDF结构化处理与多语言集成实战
PDF文件因其复杂的内部结构,在编程处理时常常面临挑战。其本质是一种基于对象树和流式数据的混合格式,涉及字体嵌入、压缩与安全等复杂机制。理解PDF的结构化原理是进行高效、无损操作的基础。QPDF
库
正是为解决这一痛点而设计,它作为一个强大的C++底层
库
,专注于对PDF文件进行结构化的重组与转换,而非内容渲染。其技术价值在于提供了稳定、高效的API,允许开发者在不破坏PDF内部对象引用和流编码的前提下,精确操控页面、元数据、加密状态等核心元素。在工程实践中,这为PDF的合并、拆分、线性化(Web优化)、加密解密
浩鲸科技C类笔试备考:C/C++核心考点与实战策略
C/C++作为后台开发与系统软件领域的基石语言,其底层机制的理解程度直接决定了工程师能否应对大规模、高并发的生产环境。校招笔试中对指针、内存管理、对象生命周期等基础知识的考察,本质上是在检验候选人是否具备扎实的工程素养。数据结构与算法能力则反映了逻辑思维与问题拆解水平,链表、二叉树、动态规划等高频题型更是拉开分数差距的关键。同时,操作系统与网络协议等计算机基础知识,构成了合格工程师的必备认知框架。从语言特性到系统原理,再到算法实战,这套知识体系广泛适用于
通信
、互联网、安防等行业的软件岗位。本文以浩鲸科技C类
计算机考研复试核心考点与
高分
策略:数据结构、操作系统、网络、数据
库
全解析
数据结构与算法、操作系统、计算机网络和数据
库
系统是计算机科学的核心基础学科,它们共同构成了现代软件系统的理论基石。数据结构研究数据的组织、存储与操作方式,算法则定义了解决问题的步骤与效率;操作系统负责管理硬件资源,提供进程调度、内存管理与文件系统等服务;计算机网络实现了设备间的数据传输与
通信
,TCP/IP协议栈是其核心框架;数据
库
系统保障了数据的一致性、持久性与高效访问。理解这些基础概念与原理,对于设计高性能、高可用的分布式系统与解决复杂工程问题具有关键价值。在计算机考研复试中,这些核心课程是面试与笔试的重
IDE是什么?一文讲清集成开发环境的组成、选型与配置
编程工具链中,IDE(集成开发环境)是连接代码编写、构建、运行与调试的核心工作台。理解其底层原理,是从文本编辑器过渡到高效开发的关键。IDE通过集成代码补全、静态检查、构建调度、调试协议和依赖管理,把零散的开发环节统一到单一界面中,显著降低上下文切换成本。不同技术栈对应不同的工具选型:
Java
后端常用IntelliJ IDEA与Eclipse,硬件开发则依赖Arduino IDE及PlatformIO,轻量任务可回归编辑器加命令行。掌握JDK、Tomcat、第三方
库
配置等高频实操点,是避免踩坑的必修课。在A
Android
80,489
社区成员
91,375
社区内容
发帖
与我相关
我的任务
Android
移动平台 Android
复制链接
扫一扫
分享
社区描述
移动平台 Android
android
android-studio
androidx
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章