Tôi có thể cung cấp cho bạn đề xuất này, Theo như kinh nghiệm lập trình C và C ++ của tôi, Một lần, khi tôi gặp vấn đề tương tự, tôi đã giải quyết nó bằng cách thay đổi cấu trúc dll được viết trong Tệp ".C" bằng cách thay đổi tên của chức năng đã triển khai chức năng gốc JNI. ví dụ: Nếu bạn muốn thêm chương trình của mình trong gói "com.mypackage", Bạn thay đổi nguyên mẫu của hàm / phương thức triển khai tệp ".C" của JNI thành sau:
JNIEXPORT jint JNICALL
Java_com_mypackage_Calculations_Calculate(JNIEnv *env, jobject obj, jint contextId)
{
//code goes here
}
JNIEXPORT jdouble JNICALL
Java_com_mypackage_Calculations_GetProgress(JNIEnv *env, jobject obj, jint contextId)
{
//code goes here
}
Vì tôi là người mới sử dụng delphi, tôi không thể đảm bảo với bạn nhưng cuối cùng sẽ nói điều này, (tôi đã học được vài điều sau khi tìm kiếm thông tin về Delphi và JNI): Hãy hỏi những người (nếu bạn không phải là người) đã cung cấp triển khai Delphi cho bản gốc mã để thay đổi tên hàm thành một cái gì đó như sau:
function Java_com_mypackage_Calculations_Calculate(PEnv: PJNIEnv; Obj: JObject; contextId: JInt):JInt; {$IFDEF WIN32} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
var
//Any variables you might be interested in
begin
//Some code goes here
end;
function Java_com_mypackage_Calculations_GetProgress(PEnv: PJNIEnv; Obj: JObject; contextId: JInt):JDouble; {$IFDEF WIN32} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
var
//Any variables you might be interested in
begin
//Some code goes here
end;
Tuy nhiên, một lời khuyên cuối cùng: Mặc dù bạn (Nếu bạn là lập trình viên delphi) hoặc họ sẽ thay đổi nguyên mẫu của các hàm này và biên dịch lại tệp dll, khi tệp dll được biên dịch, bạn sẽ không thể thay đổi tên gói của bạn. Tệp "Java" một lần nữa và một lần nữa. Bởi vì, điều này một lần nữa sẽ yêu cầu bạn hoặc họ thay đổi nguyên mẫu của các hàm trong delphi với các tiền tố đã thay đổi (ví dụ: JAVA_yourpackage_with_underscores_for_inner_packages_JavaFileName_MethodName)
Tôi nghĩ rằng điều này giải quyết được vấn đề. Trân trọng cảm ơn, Harshal Malshe