System类中的load和loadLibrary方法

解决方案 »

  1.   

    //调用一个叫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();
    }}
      

  2.   

    这些方法都是与平台相关的。
    在Windows下可以调用.dll文件,在Linux下就可以调用.a或者.so文件了。
      

  3.   

    我找了网上很多例子,都是要用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"
      

  4.   

    不是说JNI的最大优点在于它支持业界统一标准吗?
    可是我怎么看来,java直接到用dll是不可以的。必须把接口重新定义后,再把dll内部的方法或者变量值给导到java中来用。不解之处,还望各位大虾指点一二。
      

  5.   

    想要调用vb写的dll采用loadLibaray是不行的,因为vb写的dll文件是ActiveX DLL不是普通的dll文件。想要使用的办法只有用C写一个DLL文件来调用vb写成的dll文件,在利用java来调用C写成的DLL文件