Sie das Java Native Interface (JNI) verwenden müssen, die einen Satz von C/C++ Funktionen ist, dass native Code erlauben, mit Java-Code zu verbinden (das heißt Parameter von Java-Funktionsaufrufe empfängt, die Ergebnisse zurückkehrt, etc). Schreiben Sie eine Wrapper-C-Bibliothek, die JNI-Aufrufe empfängt und dann Ihre externe Bibliothek aufruft.
Zum Beispiel ruft die folgende Funktion ein Verfahren updateHandlers
auf einem nativen Objekt (das heißt, so lange in der Java-Seite gespeichert).
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);
}
Die entsprechenden Erklärungen in package.ClassName sind:
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
}
"Es funktioniert nicht für mich" ist nicht * fast * genug Informationen für uns, um Ihnen zu helfen. Sie müssen uns sagen, was Sie versucht haben und was die Ergebnisse waren. Bitte lesen Sie http://tinyurl.com/so-list –
Was nicht funktioniert?Kannst du etwas Code von dem, was du versucht hast, teilen? –
Für Linux: http://stackoverflow.com/a/30635871/895245 –