maj*_*opa 5 java-native-interface ffi dll-injection rust jnienv
我正在做一个涉及 Rust 和 Java 的项目。我需要能够从 Rust 端使用 JNI,而无需 Java 端调用它(因为它不是我的代码)。到目前为止,我已经能够确保我的 DLL 被注入(在按键上打开一个小窗口,我一直在使用它进行调试)。
相关代码的简短示例如下:
use jni::sys::{JNI_GetCreatedJavaVMs, JNIInvokeInterface_};
let jvm_ptr = null_mut() as *mut *mut *const JNIInvokeInterface_;
let count = null_mut();
// hasn't crashed
JNI_GetCreatedJavaVMs(jvm_ptr, 1, count); // https://docs.rs/jni/latest/jni/sys/fn.JNI_GetCreatedJavaVMs.html
// crashes
Run Code Online (Sandbox Code Playgroud)
我的问题是:在这种情况下是否有可能/如何获得 JNI 环境?
在评论的帮助下,我让崩溃不再发生。诀窍是预先分配一个数组。
let jvm_ptr = Vec::with_capacity(1).as_mut_ptr();
let count = null_mut();
JNI_GetCreatedJavaVMs(jvm_ptr, 1, count);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
857 次 |
最近记录: |