日期:2014-05-20  浏览次数:20659 次

我用JNI 法由DLL返回一个jclass 值, JNIEXPORT jclass 实例化的问题.
JNIEXPORT jclass 实例化的问题.
我用JNI 法由DLL返回一个jclass 值,请问如何能把它实例化呢.


Class a = bb;

public class Dll {
 
public static native Class getClass(String prompt); 
static { 
System.loadLibrary("Dll"); 

public static void main(String[] args) {

Class aa = new aagetClass("String prompt"); //请问怎能把aa实例化执行 say()呢?
aa.say();
}


public class aa{
public String say()
{
System.out.println("is ok" ); 
return "2";}

}

------解决方案--------------------
zcDll是Dll new出来的?
------解决方案--------------------
Class aa = new aagetClass("String prompt"); //请问怎能把aa实例化执行 say()呢? 
试试看
Object aa = dll.getClass("String prompt").newInstance()

Object aa = zcDll.getClass("String prompt").newInstance()
------解决方案--------------------
Object aa = Dll.getClass("String prompt").newInstance()
------解决方案--------------------
给你个提示:
Java code
jobject JNICALL Java_jni_StuService_getStuList    
     (JNIEnv *env, jclass)    
 {    
    /**************创建ArrayList 对象 start*****************/   
   
    jclass class_ArrayList=env->FindClass("java/util/ArrayList");/* 获得Java类 */   
   
    jmethodID construct=env->GetMethodID( class_ArrayList, "","()V");/* 获得构造方法 */   
        
    jobject obj_List =env->NewObject( class_ArrayList, construct, "");/* 创建java对象 */   
   
   
    /**************创建ArrayList 对象 end *****************/   
   
    /* 获得List的add方法 */   
    jmethodID list_add=env->GetMethodID(class_ArrayList,"add","(Ljava/lang/Object;)Z");    
   
    int i=0;    
    while(i<3){    
   
        jobject student=constructStudent(env,i);    
   
        /* 调用List 的add方法 */   
        env->CallObjectMethod(obj_List,list_add,student);    
   
        ++i;    
    }    
   
        
    return obj_List;    
   
   
 }