java - 在这种情况下,java 对象可以调用本机函数吗?
问题描述
Java 可以使用 JNI 调用本机函数。这意味着我可以在我的 C++ 程序中运行 JVM,并通过 JNI 仅使用指针构造 java 对象。并且在这个java对象中,可以调用native函数来访问正在运行的C++程序中的数据。它运行成功。
但是,如果我只是运行 C++ 程序并将一个对象的指针提供给 java 程序。在java中,我可以使用这个指针来构造许多对象来调用C++中的native函数吗?不同之处在于我不在 JNI 中构造 java 对象,而只是在 C++ 中获取对象的指针,然后在 java 中我调用本机函数来使用 JNI 访问 C++ 中的数据。数据存储在正在运行的 C++ 程序中。
那么有可能吗?C++程序可以有一些保护吗?所以我不能通过对象的指针访问它的数据?
解决方案
谢谢。我发现我认为 JNI 在错误的情况下。我知道 JNI 可以做什么,但忽略了一些重要的事情。
我想问的问题是是否可以将C++中object的指针转换为java对象并调用它的native函数来访问C++中object的数据。实际上,我需要在 C++ 进程中创建 JVM 以将指针转换为 Java 或者只是在 Java 进程中调用本机函数。当它们是两个进程时没有办法做到这一点,这意味着我运行一个 C++ 进程并将一个对象的指针指向另一个正在运行的 Java 进程,然后我想通过调用 Java 进程中的本机函数来访问 C++ 进程中的数据.
一个进程拥有自己的内存资源,另一个进程不能通过其本机函数调用 (JNI) 访问。进程可以通过套接字等多种方法进行通信。
推荐阅读
- regex - 验证特定标识符模式
- sql - 如何在 SQL 中获取日期差异?
- javascript - 从 JS(浏览器)创建和下载一个 UTF8 纯文本文件
- azure-data-factory - 如何将CSV复制到ADF中具有带点的列标题的Json?
- sql - SQL BigQuery - 在“IN”子句中使用 WITH 视图
- php - 将 2 个表中的 2 个不同 id 保存到另一个表中
- git - 将 git 浅克隆转换为部分克隆
- substrate - 错误:特征绑定 `types::DepartmentDetails: scale_info::TypeInfo` 不满足
- python - 为什么我的神经网络的准确率没有提高?
- javascript - JQuery - 删除字符后的文本,保持字符串逗号分隔