你可以用Visual Studio中新建一个DLL项目,然后把这些类引用进去编译成dll,这个时候再根据JNI的要求来写另外的dll来调用。http://www.javayou.com (Java自由人)

解决方案 »

  1.   

    先把类用java形式描述,再javah生成.h文件。
    其它的就是在本地代码端从java env中获取相应的类就行了。
      

  2.   

    我觉得肯定要写一个函数来实现你的逻辑功能(再写一个cpp文件,里面包括一个和java交互的函数)
    而这些类只是在你的函数里面来调用并实现功能的因为java和c++只能通过函数来交互,并且参数传递最好用基本数据类型
      

  3.   

    回复人: liusoft(红薯*稀饭) ( ) 信誉:103  2004-12-22 13:12:00  得分: 0  
     
     
       你可以用Visual Studio中新建一个DLL项目,然后把这些类引用进去编译成dll,这个时候再根据JNI的要求来写另外的dll来调用。
    ==========================================================
    foo(A aa = NULL){ a = aa;}对应的java函数怎么写啊?回复人: jFresH_MaN()(AbsolutelyFresh)(java欣人) ( ) 信誉:100  2004-12-22 13:40:00  得分: 0  
     
     
       我觉得肯定要写一个函数来实现你的逻辑功能(再写一个cpp文件,里面包括一个和java交互的函数)
    而这些类只是在你的函数里面来调用并实现功能的因为java和c++只能通过函数来交互,并且参数传递最好用基本数据类型
    =============================================================
    我想到过用基本类型来做,就是把
    class A{
    int i;
    int j;
    }
    class B{
    A a;
    foo(A aa){ a = aa;}
    ……
    }
    写成
    class B{
    int i;
    int j;
    foo(int a,int b){ i=a;j=b;}
    ……
    }
    但如果代码是
    class B{
    A *a;
    foo(A *aa = NULL){ a = aa;}
    ……
    }
    该怎么做呢?
      

  4.   

    回复人: takecare(大厅) ( ) 信誉:139  2004-12-22 13:38:00  得分: 0  
     
     
       先把类用java形式描述,再javah生成.h文件。
    其它的就是在本地代码端从java env中获取相应的类就行了。
    =======================================
    能说具体点吗?
      

  5.   

    foo(A *aa = NULL){ a = aa;}
    那个是c编译器认定的缺省值的问题,所以可以不必理会,直接 
    foo(A aa){ a = aa;}就行了。看看这个tutorial吧。
    file:///D:/JavaDev/j2sdk1.4.0_03/docs/guide/jni/index.html
      

  6.   

    呵呵,给错连接了,是http://java.sun.com/docs/books/tutorial/native1.1/index.html
      

  7.   

    奇怪,我照着tutorial的写代码,怎么每个(*env)->都报错:
    type 'JNIEnv_' does not have an overloaded member 'operator ->'
      

  8.   

    (*env)-> 
    这个是 c语言的方式
    env-〉是c++的方式另外,
    应该写一个 专门与 底层C++打交道的借口(非java接口)
    至于参数,那就得自己看了