繁体   English   中英

Java对象可以在这种情况下调用本地函数吗?

[英]can a java object call native function in this situation?

Java可以使用JNI调用本机函数。 这意味着我可以在C ++程序中运行JVM,并仅使用指针通过JNI构造Java对象。 并且在此Java对象中,可以调用本机函数来访问正在运行的C ++程序中的数据。 运行成功。

但是,如果我只运行C ++程序并将一个对象的指针提供给Java程序。 在Java中,我可以使用此指针构造许多对象来调用C ++中的本机函数吗? 区别在于,我不在JNI中构造Java对象,而只是在C ++中获取对象的指针,然后在Java中,我使用JNI调用本地函数来访问C ++中的数据。 数据存储在正在运行的C ++程序中。

那有可能吗? C ++程序可以保护一些吗? 所以我无法通过对象的指针访问其数据?

从Java,您只能调用为JNI构建的C ++函数。 另一方面,可以从Java调用C ++动态库中的任何JNI函数,并且恶意Java程序可以对JNI进行反向工程,并使用它来利用C ++代码中的某些漏洞。

谢谢。 我发现我以为JNI错误。 我知道JNI可以做什么,但是忽略一些重要的事情。

我想问的问题是我是否可以将C ++中的对象指针转换为Java对象并调用其本机函数来访问C ++中的对象数据。 实际上,我需要在C ++进程中创建JVM,以将指针转换为Java,或者仅在Java进程中调用本机函数。 而且当它们是两个进程时,无法执行此操作,这意味着我运行一个C ++进程并将其对象的指针提供给另一个正在运行的Java进程,然后我想通过在Java进程中调用本机函数来访问C ++进程中的数据。

一个进程拥有自己的内存资源,而另一个进程无法通过其本机函数调用(JNI)对其进行访问。 进程可以通过许多方法(例如套接字)进行通信。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM