哪位高手有兴趣跟我讨论讨论java中调用dll文件??小弟有些问题还是不很清楚?? 提问:我生成了共c/c++使用的.h文件那么c/c++就可以随便根据函数的功能利用c++的语法和函数来写这个函数主题吗?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有人说用socket通讯的方法调用dll怎么回事??我不懂! 只要你的函数体定义符合javah生成的头文件编译后java就能正确调用。 javah生成的头文件不过是一个函数名的表达类似这样的JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv *, jclass){}那括号里面的随便写(既随便调用c/c++的函数,指针等) 一个已经别人写好的dll文件我想进行调用其中的方法函数,我不是先根据他写的函数名来生成javah生成的函数名然后还得改他的函数名成为javah生成的函数名吧! 如果你没有重新编译这个动态库的权限的话,只能加一个代理动态库(dll),用代理库去掉用原动态库,java调用代理库,而你对这个代理库有完全的权限,想怎么写怎么写.... 调用动态库好像可以用loadlibary,我也不是十分清楚。 指针肯定是传不了,只能根据具体情况看有没有变通的办法,其他大多数数据类型,java和c/c++都有对应的,找本书都有。 那不是很惨,我刚才看了看c的原文件 总共有14个相互关联的函数其中有8个是传指针的,真的没有办法吗??有人说用socket通讯的方法调用dll怎么回事??我不懂! 这样想,在java生成的c/c++里调用DLL。也就是说DLL(你要写的)调用DLL(已经有的) 那就是说要有一个中间的dll作为代理 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, 用VC调用java和用java调用VC都可以自由调,不复杂。 用JNI可以实现java和c/c++相互调用 楼上的哥们:我在用java 调用vc的*.dll时候遇到的问题如下: 我用javah 已经生成 aaaaa.h和已经用vc做好 方法实现文件 test.cpp现在怎么把它们(这两个文件)生成 *.dll?我是菜鸟,请给我指点。谢谢 这个dll要是delphi写的,该如何在java里调? 如果你没有重新编译这个动态库的权限的话,只能加一个代理动态库(dll),用代理库去掉用原动态库,java调用代理库.我在c++builder里,我只需要包含原动态库的头文件就可以了,可是不行啊!出错!哦,我在java里还是直接写调用代理dll文件名就行了吗??还是两个都需要loadlibrary一下 还没搞定啊?如果你有重新编译DLL的权限你当然不用这个代理中介的,重新编译后loadLibrary()就可以的. 不行,还是用代理中介吧,原来的文件的函数实在是很难改!而且大部分都要用到传指针!我在c++builder里已经顺利编译通过(我采取的是动态调用),可是在java里调用就出现错误:Exception in thread "main" java.lang.UnsatisfiedLinkError:encryptpswd_set at testdll.encryptpswd_set<native Method> ..说明encryptpswd_set没有调用成功,新的dll文件里需要调用一个旧dll的函数(传一个参数)然后返回结果。经过调试发现就是这个函数的问题,难道传参数也不行encrypassword(传入参数,传出参数) //函数形式我想这个函数是通过指针传的,恐怕难办啊!有什么意见吗?? encrypassword(传入参数,传出参数)这种方式改为:xxx encrypassword(传入参数){..}把传出参数作为返回值,由于java的传值特性,是无法象c那样有什么'传出参数'的 http请求 无响应,高手进 Integer.parseInt(String s)疑惑 正则表达式 jcreator Pro问题 找个高手帮我把这个没有写完的程序写完,谢谢了. 谁有真正可以下载JBOSS和TOMCAT的地址? ~~~~~~~急求jxl.jar包 为什么字体显示不出来? JDBC 问题??? 怎样将JAVA编的应用程序发布为可执行文件EXE????? 为什么我这个总抛出异常?? 一个简单的问题 有分散啊 各位大哥帮忙啊
JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv *, jclass){
}
那括号里面的随便写(既随便调用c/c++的函数,指针等)
我在用java 调用vc的*.dll时候遇到的问题如下:
我用javah 已经生成 aaaaa.h和已经用vc做好 方法实现文件 test.cpp现在怎么把它们(这两个文件)生成 *.dll?我是菜鸟,请给我指点。谢谢
哦,我在java里还是直接写调用代理dll文件名就行了吗??还是两个都需要loadlibrary一下
如果你有重新编译DLL的权限你当然不用这个代理中介的,重新编译后
loadLibrary()就可以的.
我在c++builder里已经顺利编译通过(我采取的是动态调用),可是在java里调用就出现错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError:encryptpswd_set
at testdll.encryptpswd_set<native Method>
..
说明encryptpswd_set没有调用成功,
新的dll文件里需要调用一个旧dll的函数(传一个参数)然后返回结果。
经过调试发现就是这个函数的问题,难道传参数也不行
encrypassword(传入参数,传出参数) //函数形式
我想这个函数是通过指针传的,恐怕难办啊!
有什么意见吗??
这种方式改为:
xxx encrypassword(传入参数){..}
把传出参数作为返回值,
由于java的传值特性,是无法象c那样有什么'传出参数'的