在这种情况下 java 对象可以调用本机函数吗?
can a java object call native function in this situation?
Java 可以使用 JNI 调用本机函数。这意味着我可以在我的 C++ 程序中 运行 一个 JVM,并通过仅使用指针的 JNI 构造 java 对象。并且在这个 java 对象中,可以调用本机函数来访问 运行ning C++ 程序中的数据。它 运行 成功了。
但是,如果我只是 运行 C++ 程序并将一个对象的指针提供给 java 程序。在java中,我可以用这个指针构造很多对象来调用C++中的native函数吗?区别在于我不在 JNI 中构造 java 对象,而只是在 C++ 中获取对象的指针,然后在 java 中,我调用本机函数以使用 JNI 在 C++ 中访问数据。数据存储在 运行ning C++ 程序中。
那有可能吗? C++程序可以有一些保护吗?所以我不能通过对象的指针访问它的数据?
从 Java 开始,您只能调用为 JNI 构建的 C++ 函数。另一方面,C++ 动态库中的任何 JNI 函数都可以从 Java 调用,恶意 Java 程序可以对您的 JNI 进行逆向工程,并使用它来利用 C++ 代码中的某些漏洞。
谢谢。我发现我认为 JNI 处于错误的情况。我知道 JNI 可以做什么,但忽略了一些重要的事情。
我想问的问题是是否可以将C++中对象的指针转换为java对象并调用其本机函数来访问C++中对象的数据。事实上,我需要在 C++ 进程中创建 JVM 以将指针转换为 Java 或仅在 Java 进程中调用本机函数。当它们是两个进程时无法执行此操作,这意味着我 运行 一个 C++ 进程并将其一个对象的指针提供给另一个 运行ning Java 进程,然后我想要通过在 Java 进程中调用本机函数来访问 C++ 进程中的数据。
一个进程拥有自己的内存资源,另一个进程无法通过其本机函数调用 (JNI) 访问它。进程可以通过套接字等多种方式进行通信。
Java 可以使用 JNI 调用本机函数。这意味着我可以在我的 C++ 程序中 运行 一个 JVM,并通过仅使用指针的 JNI 构造 java 对象。并且在这个 java 对象中,可以调用本机函数来访问 运行ning C++ 程序中的数据。它 运行 成功了。
但是,如果我只是 运行 C++ 程序并将一个对象的指针提供给 java 程序。在java中,我可以用这个指针构造很多对象来调用C++中的native函数吗?区别在于我不在 JNI 中构造 java 对象,而只是在 C++ 中获取对象的指针,然后在 java 中,我调用本机函数以使用 JNI 在 C++ 中访问数据。数据存储在 运行ning C++ 程序中。
那有可能吗? C++程序可以有一些保护吗?所以我不能通过对象的指针访问它的数据?
从 Java 开始,您只能调用为 JNI 构建的 C++ 函数。另一方面,C++ 动态库中的任何 JNI 函数都可以从 Java 调用,恶意 Java 程序可以对您的 JNI 进行逆向工程,并使用它来利用 C++ 代码中的某些漏洞。
谢谢。我发现我认为 JNI 处于错误的情况。我知道 JNI 可以做什么,但忽略了一些重要的事情。
我想问的问题是是否可以将C++中对象的指针转换为java对象并调用其本机函数来访问C++中对象的数据。事实上,我需要在 C++ 进程中创建 JVM 以将指针转换为 Java 或仅在 Java 进程中调用本机函数。当它们是两个进程时无法执行此操作,这意味着我 运行 一个 C++ 进程并将其一个对象的指针提供给另一个 运行ning Java 进程,然后我想要通过在 Java 进程中调用本机函数来访问 C++ 进程中的数据。
一个进程拥有自己的内存资源,另一个进程无法通过其本机函数调用 (JNI) 访问它。进程可以通过套接字等多种方式进行通信。