आप Java Native Interface (JNI), जो C/C++ फ़ंक्शन जो मूल कोड जावा कोड के साथ इंटरफेस करने के लिए अनुमति का एक सेट है का उपयोग करने की आवश्यकता होगी (अर्थात जावा फ़ंक्शन कॉल से पैरामीटर प्राप्त करने, परिणाम देने, आदि)। एक रैपर सी लाइब्रेरी लिखें जो जेएनआई कॉल प्राप्त करे और फिर अपनी बाहरी लाइब्रेरी को कॉल करें।
उदाहरण के लिए, निम्न फ़ंक्शन किसी मूल ऑब्जेक्ट पर विधि updateHandlers
को आमंत्रित करता है (जो जावा पक्ष में लंबे समय तक संग्रहीत होता है)।
class MyImpl {
void updateHandlers(JNIEnv *env) {
this->contentHandler = ....;
}
}
JNIEXPORT void JNICALL Java_package_Classname_updateHandlers0
(JNIEnv *env, jobject obj, jlong ptr)
{
((MyImpl*)ptr)->updateHandlers(env);
}
package.ClassName में इसी घोषणाओं हैं:
private long ptr; //assigned from JNI
public void updateHandlers() {
if (ptr==0) throw new NullPointerException();
updateHandlers0(ptr);
}
private native void updateHandlers0(long ptr);
static {
try {
/*try preloading the library external.dll*/
System.loadLibrary("external");
} catch (UnsatisfiedLinkError e) {
/*library will be resolved when loading myjni*/
}
System.loadLibrary("myjni"); //load myjni.dll
}
"यह मेरे लिए काम नहीं करता है" आपके लिए आपकी सहायता करने के लिए * लगभग * पर्याप्त जानकारी नहीं है। आपको हमें यह बताना होगा कि आपने क्या प्रयास किया है, और परिणाम क्या थे। कृपया http://tinyurl.com/so-list –
पढ़ें क्या काम नहीं करता है?क्या आप कुछ कोड साझा कर सकते हैं जो आपने कोशिश की? –
लिनक्स के लिए: http://stackoverflow.com/a/30635871/895245 –