How to import a class from default package

后端 未结 9 860
盖世英雄少女心
盖世英雄少女心 2020-11-22 11:02

Possible Duplicate: How to access java-classes in the default-package?


I am using Eclipse 3.5 and I have created a project with so

9条回答
  •  深忆病人
    2020-11-22 11:18

    I can give you this suggestion, As far as know from my C and C++ Programming experience, Once, when I had the same kinda problem, I solved it by changing the dll written structure in ".C" File by changing the name of the function which implemented the JNI native functionality. for example, If you would like to add your program in the package "com.mypackage", You change the prototype of the JNI implementing ".C" File's function/method to this one:

    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
    }
    

    Since I am new to delphi, I can not guarantee you but will say this finally, (I learned few things after googling about Delphi and JNI): Ask those people (If you are not the one) who provided the Delphi implementation of the native code to change the function names to something like this:

    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;
    

    But, A final advice: Although you (If you are the delphi programmer) or them will change the prototypes of these functions and recompile the dll file, once the dll file is compiled, you will not be able to change the package name of your "Java" file again & again. Because, this will again require you or them to change the prototypes of the functions in delphi with changed prefixes (e.g. JAVA_yourpackage_with_underscores_for_inner_packages_JavaFileName_MethodName)

    I think this solves the problem. Thanks and regards, Harshal Malshe

提交回复
热议问题