Bạn sẽ cần phải sử dụng Java Native Interface (JNI), mà là một tập hợp của C C++ chức năng/cho phép mã nguồn gốc để giao tiếp với mã java (ví dụ: nhận các thông số từ các cuộc gọi chức năng java, trả kết quả, vv). Viết một thư viện C bao bọc để nhận các cuộc gọi JNI và sau đó gọi thư viện bên ngoài của bạn.
Ví dụ, hàm sau gọi một phương thức updateHandlers
trên đối tượng gốc (được lưu trữ ở phía Java).
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);
}
Các tờ khai tương ứng trong package.ClassName là:
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
}
"Nó không hoạt động đối với tôi" không phải là * gần * đủ thông tin để chúng tôi trợ giúp bạn. Bạn cần cho chúng tôi biết những gì bạn đã thử và kết quả là gì. Vui lòng đọc http://tinyurl.com/so-list –
Điều gì không hiệu quả?Bạn có thể chia sẻ một số mã của những gì bạn đã thử không? –
Đối với Linux: http://stackoverflow.com/a/30635871/895245 –