java中怎样调用vb生成的dll? System类中的load和loadLibrary方法 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //调用一个叫s3dll.DLL文件的例子!public class JavaSense3{ public native void CallSense3(short FunctionCode, short OutWords, short OutBuff0, short OutBuff1, short OutBuff2, short OutBuff3); static { try { String Sense3="s3dll"; System.loadLibrary(Sense3); System.out.println("加载成功!11111"); } catch( UnsatisfiedLinkError e ) { e.printStackTrace() ; System.exit( -1 ); } }public void valid(){ CallSense3(nFunctionCode, nOutWords, nPass0, nPass1, nPass2, nOutBuff3);}//用一个类来调用此类的方法valid()成功!也就是直接用JAVA 来运行。如:/*********************************************************************/public class random{ public static void main(String[] args) throws Exception { JavaSense3 js = new JavaSense3(); js.valid(); }} 这些方法都是与平台相关的。在Windows下可以调用.dll文件,在Linux下就可以调用.a或者.so文件了。 我找了网上很多例子,都是要用c来做dll.没有用vb做dll的例子阿.....:(总觉得是不是c做出来的dll和vb做出来的dll不一样。各位大虾提示以下好吗?我的代码也很简单。class rtnDLL{ rtnDLL(){ return; } public native void rtnParam(String a); static { System.loadLibrary("rtnPara"); }}public class Test { public static void main(String[] args) { String bb = "1"; rtnDLL rDll = new rtnDLL(); rDll.rtnParam(bb); System.out.println(bb); }}最后运行结果总是说:java.lang.UnsatisfiedLinkError: rtnParam at server.common.rtnDLL.rtnParam(Native Method) at server.common.Test.main(Test.java:38)Exception in thread "main" 不是说JNI的最大优点在于它支持业界统一标准吗?可是我怎么看来,java直接到用dll是不可以的。必须把接口重新定义后,再把dll内部的方法或者变量值给导到java中来用。不解之处,还望各位大虾指点一二。 想要调用vb写的dll采用loadLibaray是不行的,因为vb写的dll文件是ActiveX DLL不是普通的dll文件。想要使用的办法只有用C写一个DLL文件来调用vb写成的dll文件,在利用java来调用C写成的DLL文件 关于十六进制的 request中htmltag的过滤问题 如何让String输出一个空字符 初学Hibernate,我迷糊了 关于此段jsp代码的疑问 求一正则表达式, JNI使用入门问题,请指点 大哥们帮忙呀 请问大虾在sco unix5.05下,数据库informix,WEB服务用tomcat3.0的JDBC驱动有否? 把JPanel 放入JInternalFrame 中显示的问题?请教高手! 小问题送分 请教! JSplitPane嵌套怎么不好使??
public class JavaSense3{
public native void
CallSense3(short FunctionCode, short OutWords, short OutBuff0,
short OutBuff1, short OutBuff2, short OutBuff3); static
{
try
{
String Sense3="s3dll";
System.loadLibrary(Sense3);
System.out.println("加载成功!11111");
}
catch( UnsatisfiedLinkError e )
{
e.printStackTrace() ;
System.exit( -1 );
}
}public void valid()
{
CallSense3(nFunctionCode, nOutWords, nPass0, nPass1, nPass2, nOutBuff3);
}//用一个类来调用此类的方法valid()成功!也就是直接用JAVA 来运行。如:
/*********************************************************************/
public class random
{
public static void main(String[] args) throws Exception
{
JavaSense3 js = new JavaSense3();
js.valid();
}}
在Windows下可以调用.dll文件,在Linux下就可以调用.a或者.so文件了。
总觉得是不是c做出来的dll和vb做出来的dll不一样。
各位大虾提示以下好吗?我的代码也很简单。
class rtnDLL
{
rtnDLL(){
return;
}
public native void rtnParam(String a);
static {
System.loadLibrary("rtnPara");
}}
public class Test {
public static void main(String[] args) {
String bb = "1";
rtnDLL rDll = new rtnDLL();
rDll.rtnParam(bb);
System.out.println(bb);
}
}最后运行结果总是说:
java.lang.UnsatisfiedLinkError: rtnParam
at server.common.rtnDLL.rtnParam(Native Method)
at server.common.Test.main(Test.java:38)
Exception in thread "main"
可是我怎么看来,java直接到用dll是不可以的。必须把接口重新定义后,再把dll内部的方法或者变量值给导到java中来用。不解之处,还望各位大虾指点一二。