Wir haben es uns viel zu schwer gemacht. Wenn ich die jvm.dll in das Exe verzeichnis kopiere und gegen die jvm.lib linke, dann kann man sich das ganze dynamische Zeugs sparen.
Code:
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include "MpuTools.h"
#include "jni.h"
int main () {
JavaVM *jvm = NULL;
JavaVMInitArgs vm_args;
JavaVMOption options[2];
JNIEnv *env = NULL;
options[0].optionString = "-Djava.compiler=NONE";
options[1].optionString = "-Djava.class.path=.";
vm_args.version = JNI_VERSION_1_4;
vm_args.options = options;
vm_args.nOptions = 2;
vm_args.ignoreUnrecognized = JNI_FALSE;
int res = JNI_CreateJavaVM(&jvm, (void **)&env, &vm_args);
if (res < 0) {
printf("JNI_CreateJavaVM\nFehler: %d", res);
}
return 0;
}
Kompiliert wunderbar. Bis auf die Tatsache, dass res -1 (unknown error) ist.
Ich habe die lib mit implib.exe aus der jvm.dll aus dem Java bin/client Ordner erzeugt.