在这种情况下,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++函数。另一方面,C++动态库中的任何JNI函数都可以从Java调用,恶意Java程序可以对您的JNI进行反向工程,并使用它来利用C++代码中的一些漏洞。
谢谢。我发现我认为JNI的处境不对。我知道JNI可以做什么,但忽略一些重要的事情。
我想问的问题是,我是否可以将C++中对象的指针转换为java对象,并调用其本机函数来访问C++中对象数据。事实上,我需要在C++进程中创建JVM来将指针转换为Java,或者只调用Java进程中的本机函数。当它们是两个进程时,没有办法做到这一点,这意味着我运行一个C++进程,并将其一个对象的指针提供给另一个运行Java进程,然后我想通过调用Java进程中的本机函数来访问C++进程中的数据。
一个进程拥有自己的内存资源,另一个进程无法通过其本机函数调用(JNI(进行访问。进程可以通过许多方法(如套接字(进行通信。
相关文章:
- 在这种情况下,java对象是否可以调用本机函数
- 多次调用本机方法时出现致命错误
- 终止调用本机代码的 .Net 线程
- 在使用该名称创建变量后调用本机 C 函数
- AccessViolationException从托管C (ASP.NET的包装器)调用本机C 代码
- 如何从 JNI 传递 std::list 参数来调用本机 C++ 函数
- 从 Android 中的原生 c++ 文件调用本机 opencv
- NDK - 包含一个预构建的库,并在 Android 项目中调用本机函数
- 从 C# 调用本机C++函数
- 从java调用本机方法时使用Libc SIGSEGV
- 如何从VM调用本机函数
- 使用JNI从Java调用本机(C++)函数时发生访问冲突:这是我的代码问题,还是已知问题
- 无法调用本机方法 Eclipse
- Java:调用本机方法,给出"线程"main"java.lang.UnsatisfiedLinkError中的异常"
- 从托管代码调用本机函数
- 从带有 out 参数的 c# 调用本机 c++ 代码
- 使用 c++/cli 中的 std::string 参数调用本机 c++ dll
- 从 C# 应用调用本机函数
- 从Android Java调用本机函数 - JNI的替代品
- 从Unity3d调用本机DLL的最佳方式是什么