Size şu öneriyi verebilirim, C ve C ++ Programlama tecrübemden bildiğim kadarıyla, bir kez aynı türden bir problem yaşadığımda, ".C" Dosyasındaki dll yazılı yapısını değiştirerek ismini değiştirerek çözdüm. JNI yerel işlevselliğini uygulayan işlev. örneğin, programınızı "com.mypackage" paketine eklemek isterseniz, ".C" Dosyasının işlevini / yöntemini uygulayan JNI prototipini bununla değiştirirsiniz:
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
}
Delphi'de yeni olduğum için, size garanti veremem ama sonunda şunu söyleyeceğim (Delphi ve JNI hakkında googledikten sonra birkaç şey öğrendim): Delphi'nin yerli uygulamasını sağlayan kişilere (eğer siz değilseniz) sorun. işlev adlarını şunun gibi değiştirmek için kod:
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;
Ancak, son bir tavsiye: Siz (delphi programcısı iseniz) veya onlar bu fonksiyonların prototiplerini değiştirecek ve dll dosyasını yeniden derleyecek olsanız da, dll dosyası derlendikten sonra paket adınızı değiştiremezsiniz. "Java" dosyasını tekrar & tekrar. Çünkü, bu yine sizin veya onların delphi'deki işlevlerin prototiplerini değiştirilmiş öneklerle değiştirmenizi gerektirecektir (örn. JAVA_yourpackage_with_underscores_for_inner_packages_JavaFileName_MethodName)
Sanırım bu sorunu çözüyor. Teşekkürler ve saygılar, Harshal Malshe