大家好,小弟初学者,想问下java调用c++代码的问题。我看了网上的帖子,发现都是比较简单的例子,都是调用c++里一两个function。我现在有的是一个c++project,想把它转成java的,里面有许多自定义的类型和继承关系。如果只是用java调用dll行么?那些继承关系还在么?
谢谢了。

解决方案 »

  1.   

    JNI手册中有比较详细的介绍,可以去看看...
      

  2.   

    java调用C++是通过natvie方法映射到C++中的某个方法的,在方法中将java中的调用参数转换成C++中的数据类型,接下来走的就是C++代码了,你用什么类型都可以,什么继承,多态,最后方法返回的时候再转换成java需要的类型.
      

  3.   

    如果你完全移植,那么java这边也一样定义相关的类(包括子类,也就是你的继承关系是一样的)
    如果是java调用dll,相当于C++提供一个接口给java调用,java不关心C++内部的实现细节,也就是不影响C++内部的继承关系
    所以,我不是很明白LZ的疑惑是什么?
      

  4.   

    谢谢你!我的疑惑就是担心继承关系没了.想问下,如果这样完全移植的话,是不是c++中每一个类都生成一个dll供java调用?
      

  5.   


    完全移植,就是把C++的代码改成java的代码,为何还要调用dll
    如果是调用dll的方式,那么定好调用的接口就可以了,不用每个类做一个dll,比如dll有个methodA方法,java调用methodA,它不关心methodA内存怎么实现,C++里面的类啊什么的跟它没关系,它只知道调用methodA,然后得到结果就可以了