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./edit: sfds
-
Sieht so aus, als müsstest du noch eine Library dazulinken.
Das und die anderen Fragen haben aber nichts mit Standard C++ zu tun.
-
Dieser Thread wurde von Moderator/in davie aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
du machst da oben native code. in java kann man betriebssystemabhängigen code mit c hinzufügen..
http://www.informatik.fh-muenchen.de/~schieder/seminar-java-ss98/jni/jni_aufbau.html#top_of_page
schau dir diesen link mal an.du musst einen bestimmten aufbau haben, eine reihenfolge. java bietet dafür die schnittstelle, jni. halte dich an die reihenfolge, dann kann nix schiefgehen.
-
[quote="tommi"Kann mir jemand sagen wo im Quellcode der Pfad zum
SDK gelesen wird?[/quote]
Brauch' ja auch nicht...
-
@Sgt Nukem
er hat ein wenig chaos veranstaltet mit dem aufmachen mehrerer threads..
schreib mal hier weiter
http://www.c-plusplus.net/forum/viewtopic.php?p=478520#478520