JVM mit C++
-
Hi zusammen,
ich bastle seit geraumer Zeit an folgendem Problem: Ich benötige ein C++
Programm, daß eine JVM erzeugt und mein JavaProgramm ausführt. Das Beispiel,
daß ich im Netz gefunden habe ist von 2000 und funktioniert nicht. Ich werde
aus dem C++ Quellcode ehrlich gesagt nicht ganz schlau. Zum Ausführen muss
doch auf dem Rechner Minimum das JRE installiert sein. Die Umgebungsvariable
JAVA_HOME ist gesetzt. Kann mir jemand sagen wo im Quellcode der Pfad zum
SDK gelesen wird?
Einzige Ursache, die ich sehe ist die Version, da das Beispiel wie gesagt
von 2000 stammt. Ich benutze SDK 1.4.2.Danke für Eure Hilfe
Matthias----
#include <jni.h>
#include <stdlib.h>#define PATH_SEPARATOR ';'
#define USER_CLASSPATH "." /* where Prog.class is */main() {
JNIEnv *env;
JavaVM *jvm;
jint res;
jclass cls;
jmethodID mid;
jstring jstr;
jclass stringClass;
jobjectArray args;JavaVMInitArgs vm_args;
JavaVMOption options[1];
options[0].optionString =
"-Djava.class.path=" USER_CLASSPATH;
vm_args.version = 0x00010002;
vm_args.options = options;
vm_args.nOptions = 1;
vm_args.ignoreUnrecognized = JNI_TRUE;Hier tritt der Fehler auf!!!
--> res = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);if (res < 0) {
fprintf(stderr, "Can't create Java VM\n");
exit(1);
}
cls = env->FindClass("Prog");
if (cls == NULL) {
goto destroy;
}mid = env->GetStaticMethodID(cls, "main",
"([Ljava/lang/StringV");if (mid == NULL) {
goto destroy;
}
jstr = env->NewStringUTF(" from C!");
if (jstr == NULL) {
goto destroy;
}
stringClass = env->FindClass("java/lang/String");
args = env->NewObjectArray(1, stringClass, jstr);
if (args == NULL) {
goto destroy;
}
env->CallStaticVoidMethod(cls, mid, args);destroy:
if (env->ExceptionOccurred()) {
env->ExceptionDescribe();
}
jvm->DestroyJavaVM();
}----
Invoke.obj : error LNK2001: Nichtaufgeloestes externes Symbol
__imp__JNI_CreateJavaVM@12
Debug/Invoke.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.
-
bitte stelle deine fragen im forum immer nur einmal.
hier gehts weiter ->
http://www.c-plusplus.net/forum/viewtopic.php?t=67599&highlight=