Java可以使用JNI调用本机函数。这意味着我可以在我的C++程序中运行一个JVM,并通过JNI构造java对象。在这个java对象中,可以调用本机函数来访问运行C++程序中的数据。它运行成功。
但是,如果我只是运行C++程序,并将一个对象的指针提供给java程序。在C++中,我可以使用这个指针构造许多对象来调用本机函数吗?不同的是,我在JNI中不构造java对象,在C++中只获取对象的指针,然后在java中使用JNI调用本机函数来访问C++中的数据。数据存储在正在运行的C++程序中。
那么,这是可能的吗?C++程序可以有一些保护吗?所以我不能通过一个对象的指针来访问它的数据?
发布于 2018-10-29 16:05:04
谢谢。我发现我把JNI放在了错误的位置。我知道JNI可以做什么,但是忽略一些重要的事情。
我想问的问题是,我是否可以将C++中object的指针转换为java对象,并调用其本机函数来访问C++中的object数据。实际上,我需要在C++进程中创建JVM来将指针转换为Java,或者只是在Java进程中调用本机函数。当它们是两个进程时,这是没有办法的,这意味着我运行一个C++进程,并将它的一个对象的指针指向另一个正在运行的进程,然后我想通过调用C++进程中的本机函数来访问Java进程中的数据。
一个进程拥有自己的内存资源,另一个进程无法通过其本机函数调用(JNI)进行访问。进程可以通过许多方法进行通信,例如套接字。
发布于 2018-10-28 03:41:44
在Java语言中,您只能调用为JNI构建的C++函数。另一方面,Java动态库中的任何C++函数都可以从Java语言中调用,恶意的Java程序可以对您的JNI进行反向工程,并利用它来利用您的C++代码中的一些漏洞。
https://stackoverflow.com/questions/53023190
复制相似问题