odwołano się do nierozwiązanego zewnętrznego symbolu __imp__JNI_CreateJavaVM @ 12
Chcę napisać program C ++, który wywołuje metodę Java.
Usiłuję wywołać funkcję Java z C ++. Jak opisano tutaj
http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/invocation.html
ale otrzymuję ten błąd podczas debugowania i nie mogę go obsłużyć. Używam Visual Studio 2012. Oto mój kod C ++.
#include "stdafx.h"
#include <jni.h> /* where everything is defined */
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
JavaVM *jvm; /* denotes a Java VM */
JNIEnv *env; /* pointer to native method interface */
JavaVMInitArgs vm_args; /* JDK/JRE 6 VM initialization arguments */
JavaVMOption* options = new JavaVMOption[1];
options[0].optionString = "-Djava.class.path=C:\\Users\\yv\\workspace\\JNI\\bin"; // my class is under this directory.
vm_args.version = 0x00010006;
vm_args.nOptions = 1;
vm_args.options = options;
vm_args.ignoreUnrecognized = false;
/* load and initialize a Java VM, return a JNI interface
* pointer in env */
JNI_CreateJavaVM(&jvm, (void **)&env, &vm_args); // I got err msg "cannot convert parameter 2 from 'JNIEnv **' to 'void **' " so added (void **) as described in some other sources
delete options;
jvm->DestroyJavaVM();
return 0;
}
Java zainstalowana na mojej wersji comp to C: Użytkownicy v> JAVA -version java wersja "1.7.0_17" Java (TM) SE Runtime Environment (kompilacja 1.7.0_17-b02) Java HotSpot (TM) 64-bitowa maszyna VM ( build 23.7-b01, tryb mieszany)
i mój kod java w razie potrzeby.
public class jniClass {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Hello, World!");
System.out.println("Arguments sent to this program:");
if (args.length == 0) {
System.out.println("(None)");
} else {
for (int i=0; i<args.length; i++) {
System.out.print(args[i] + " ");
}
System.out.println();
}
}
}