java中怎样调用vb生成的dll?
帮帮小弟吧。 问题点数:100、回复次数:7Top
1 楼Mailbomb(网络咖啡http://blog.csdn.net/mailbomb)回复于 2003-10-02 14:21:55 得分 0
System类中的load和loadLibrary方法Top
2 楼007james(苏乞儿)回复于 2003-10-02 15:39:28 得分 0
load和loadLibrary方法,yes!Top
3 楼noratong(吴雨)回复于 2003-10-02 16:27:08 得分 0
//调用一个叫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();
}
}
Top
4 楼mattus_zhao(人生十有八九不如意)回复于 2003-10-02 16:31:20 得分 0
这些方法都是与平台相关的。
在Windows下可以调用.dll文件,在Linux下就可以调用.a或者.so文件了。Top
5 楼joe2002(joe)回复于 2003-10-02 18:31:36 得分 0
我找了网上很多例子,都是要用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"Top
6 楼joe2002(joe)回复于 2003-10-02 18:37:50 得分 0
不是说JNI的最大优点在于它支持业界统一标准吗?
可是我怎么看来,java直接到用dll是不可以的。必须把接口重新定义后,再把dll内部的方法或者变量值给导到java中来用。
不解之处,还望各位大虾指点一二。Top
7 楼Polarislee(北极星)(无房无车,飘在北京)回复于 2003-10-02 23:52:18 得分 100
想要调用vb写的dll采用loadLibaray是不行的,因为vb写的dll文件是ActiveX DLL不是普通的dll文件。想要使用的办法只有用C写一个DLL文件来调用vb写成的dll文件,在利用java来调用C写成的DLL文件Top




