以下代码可以从Java调用C++方法。从Java调用到C++,然后从相同的C++方法调用java方法
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);
}
}
Example.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,但它崩溃了。
Example.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做一个完整的流程。任何关于这个问题的信息都将非常有用。
你甚至没有Java VM运行? – nneonneo
http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/functions.html#wp16660 – Brian
你是怎么从C++调用java方法的? (请使用代码) –