提问:我生成了共c/c++使用的.h文件
那么c/c++就可以随便根据函数的功能利用c++的语法和函数来写这个函数主题吗??

解决方案 »

  1.   

    有人说用socket通讯的方法调用dll怎么回事??我不懂!
      

  2.   

    只要你的函数体定义符合javah生成的头文件编译后java就能正确调用。
      

  3.   

    javah生成的头文件不过是一个函数名的表达类似这样的
    JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv *, jclass){
    }
    那括号里面的随便写(既随便调用c/c++的函数,指针等)
      

  4.   

    一个已经别人写好的dll文件我想进行调用其中的方法函数,我不是先根据他写的函数名来生成javah生成的函数名然后还得改他的函数名成为javah生成的函数名吧!
      

  5.   

    如果你没有重新编译这个动态库的权限的话,只能加一个代理动态库(dll),用代理库去掉用原动态库,java调用代理库,而你对这个代理库有完全的权限,想怎么写怎么写....
      

  6.   

    调用动态库好像可以用loadlibary,我也不是十分清楚。
      

  7.   

    指针肯定是传不了,只能根据具体情况看有没有变通的办法,其他大多数数据类型,java和c/c++都有对应的,找本书都有。
      

  8.   

    那不是很惨,我刚才看了看c的原文件 总共有14个相互关联的函数其中有8个是传指针的,真的没有办法吗??有人说用socket通讯的方法调用dll怎么回事??我不懂!
      

  9.   

    这样想,在java生成的c/c++里调用DLL。也就是说DLL(你要写的)调用DLL(已经有的)
      

  10.   

    那就是说要有一个中间的dll作为代理
      

  11.   

    For convenience and to avoid programming errors, the JNI implements a set of types that are conceptually all subclassed from (or are "subtypes" of) jobject,
      

  12.   

    用VC调用java和用java调用VC都可以自由调,不复杂。
      

  13.   

    用JNI可以实现java和c/c++相互调用
      

  14.   

    楼上的哥们:
    我在用java 调用vc的*.dll时候遇到的问题如下: 
    我用javah 已经生成 aaaaa.h和已经用vc做好 方法实现文件 test.cpp现在怎么把它们(这两个文件)生成 *.dll?我是菜鸟,请给我指点。谢谢 
      

  15.   

    这个dll要是delphi写的,该如何在java里调?
      

  16.   

    如果你没有重新编译这个动态库的权限的话,只能加一个代理动态库(dll),用代理库去掉用原动态库,java调用代理库.我在c++builder里,我只需要包含原动态库的头文件就可以了,可是不行啊!出错!
    哦,我在java里还是直接写调用代理dll文件名就行了吗??还是两个都需要loadlibrary一下
      

  17.   

    还没搞定啊?
    如果你有重新编译DLL的权限你当然不用这个代理中介的,重新编译后
    loadLibrary()就可以的.
      

  18.   

    不行,还是用代理中介吧,原来的文件的函数实在是很难改!而且大部分都要用到传指针!
    我在c++builder里已经顺利编译通过(我采取的是动态调用),可是在java里调用就出现错误:
    Exception in thread "main" java.lang.UnsatisfiedLinkError:encryptpswd_set
              at testdll.encryptpswd_set<native Method>
              ..
    说明encryptpswd_set没有调用成功,
    新的dll文件里需要调用一个旧dll的函数(传一个参数)然后返回结果。
    经过调试发现就是这个函数的问题,难道传参数也不行
    encrypassword(传入参数,传出参数) //函数形式
    我想这个函数是通过指针传的,恐怕难办啊!
    有什么意见吗??
      

  19.   

    encrypassword(传入参数,传出参数)
    这种方式改为:
    xxx encrypassword(传入参数){..}
    把传出参数作为返回值,
    由于java的传值特性,是无法象c那样有什么'传出参数'的