以下代码可以从 Java 调用 C++ 方法。
JNITest.java
public class JNITest {
static {
System.load("D:\\gagan docs\\TestJava\\Example.dll");
}
public native int intMethod(int n);
public static void main(String[] args) {
JNITest jnitest = new JNITest();
int square=jnitest.intMethod(5);
System.out.println("HelloWorld");
System.out.println("From init method"+square);
}
}
例子.cpp
#include "JNITest.h"
#include<string.h>
JNIEXPORT jint JNICALL Java_JNITest_intMethod(JNIEnv *env, jobject obj, jint num)
{
return num*num;
}
但是,当我尝试使用以下方法从上述 CPP 调用 java 方法时,JVM 崩溃。
我也尝试过使用 createJavaVM 方法创建 JVM,但它崩溃了。
例子.cpp
#include "JNITest.h"
#include<string.h>
static JavaVM *jvm = NULL
JNIEXPORT jint JNICALL Java_JNITest_intMethod(JNIEnv *env, jobject obj, jint num)
{
JNIEnv* jenv;
int res = jvm->AttachCurrentThread((void **)&jenv, NULL);
return num*num;
}
我正在使用 Linux(64 位)机器和 JDK 64 位(Java 1.6)。
我想从 Java -> C++ -> Java 做一个完整的流程。有关此问题的任何信息都将非常有用。