首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在这种情况下,java对象可以调用本机函数吗?

在这种情况下,java对象可以调用本机函数吗?
EN

Stack Overflow用户
提问于 2018-10-27 23:01:34
回答 2查看 50关注 0票数 0

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

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

那么,这是可能的吗?C++程序可以有一些保护吗?所以我不能通过一个对象的指针来访问它的数据?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-29 16:05:04

谢谢。我发现我把JNI放在了错误的位置。我知道JNI可以做什么,但是忽略一些重要的事情。

我想问的问题是,我是否可以将C++中object的指针转换为java对象,并调用其本机函数来访问C++中的object数据。实际上,我需要在C++进程中创建JVM来将指针转换为Java,或者只是在Java进程中调用本机函数。当它们是两个进程时,这是没有办法的,这意味着我运行一个C++进程,并将它的一个对象的指针指向另一个正在运行的进程,然后我想通过调用C++进程中的本机函数来访问Java进程中的数据。

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

票数 0
EN

Stack Overflow用户

发布于 2018-10-28 03:41:44

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53023190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档