मैं जेएनआई एपीआई से परिचित होने की कोशिश कर रहा हूं लेकिन संकलन करने के लिए नमूना सी ++ प्रोग्राम नहीं प्राप्त कर सकता। मुझे लिनक्स में संकलन और चलाने के लिए एक ही नमूना मिला है (नीचे दिए गए लिंक में प्रश्न पोस्ट करने के बाद) लेकिन इसे विंडोज़ में संकलित नहीं किया जा सकता है; मैं mingw g ++ का उपयोग कर रहा हूँ। मैंने विंडोज़ पथों में सभी शामिल पथ बदल दिए हैं और jni.h संकलन समय पर स्थित है लेकिन jvm.dll नहीं है।'JNI_CreateJavaVM' विंडो के अनिर्धारित संदर्भ
g++ -g -I"C:\Program Files (x86)\Java\jdk1.7.0_21\include" -I"C:\Program Files (x86)\Java\jdk1.7.0_21\include\win32" -L"C:\Program Files (x86)\Java\jdk1.7.0_21\jre\bin\server" callJava.cpp -ljvm
और ...
**same as above with the additional** : -L"C:\Program Files (x86)\Java\jdk1.7.0_21\lib"
त्रुटि मैं मिलता है:
undefined reference to `[email protected]'
undefined reference to `JNI_CreateJavaVM' linux
यहाँ आदेशों मैं कोशिश की है संकलित करने के लिए उपयोग कर रहा है
और सीपीपी संकलित किया जा रहा है:
#include <jni.h>
int main(){
//firstTest();
JavaVM *jvm;
JNIEnv *env;
JavaVMInitArgs vm_args;
JavaVMOption options[1];
options[0].optionString = "-Djava.class.path=C:/Users/Ron/Dropbox/jni/simple/ctojava/win";
vm_args.version = JNI_VERSION_1_6;
vm_args.options = options;
vm_args.nOptions = 1;
vm_args.ignoreUnrecognized = JNI_FALSE;
int res = JNI_CreateJavaVM(&jvm, (void **)&env, &vm_args);
jclass cls = env->FindClass("Hello");
jmethodID mid = env->GetStaticMethodID(cls, "staticInt", "(I)I");
env->CallStaticVoidMethod(cls, mid,10);
jvm->DestroyJavaVM();
}
मैंने कई उदाहरण देखे हैं लेकिन अभी भी समाधान नहीं मिल रहा है। किसी भी मदद की सराहना की है!
अद्यतन:
mingw32/bin/ld.exe: cannot find -ljvm
जैसा कि मैंने कहा, इस सटीक दृष्टिकोण: मैं यकीन है कि jvm.dll क्योंकि स्थित किया जा रहा है अगर मैं एल "path_to_jvm" को दूर तो मैं त्रुटि मिलती हूँ लिनक्स में काम करता है, मैं विंडोज़ के लिए और क्या याद कर रहा हूं?
यह एमएसवीसी के साथ जी ++ से निर्मित पुस्तकालयों से जुड़ने में एक समस्या हो सकती है। इस इंटरऑपरेबिलिटी पोस्ट को देखें: http://www.mingw.org/wiki/MixingCompilers। क्या आपने इसके बजाय विजुअल स्टूडियो का उपयोग करने पर विचार किया है? – maba
@ माबा- मैंने विजुअल स्टूडियो में भी कोशिश की है लेकिन मुझे एक ही परिणाम मिल गया है। क्या आप इस तथ्य के बारे में जानते हैं कि jvm.dll एमएसवीसी के साथ बनाया गया है? मुझे लगता है कि यह नहीं है, लेकिन यह सिर्फ एक अनुमान है। – RBI
@ आरबीआई यह एमएसवीसी के साथ बनाया गया है। निर्यात तालिका में फ़ंक्शन नामों को उलझाने का तरीका एक उपहार है। – greatwolf