本帖最后由 Yudean_Read 于 2011-07-27 11:26:46 编辑

解决方案 »

  1.   

    是JNI吧,看不明白你写的啥意思啊
      

  2.   

    是JNA..这有例子http://blog.csdn.net/shendl/article/details/3589676
    偶没接触过,同学习。。
      

  3.   

    JNA,JNI的用起来太麻烦了,老是出错误!
      

  4.   

    有些问题已经包含在其他问题之中,再加上有些问题我也是一知半解,所以就不一一解答了,希望对你有用。
    首先,StdCallLibrary extends Library, StdCall
    其次,public interface TestDll1 extends Library 此外的TestDll1是接口名称与C函数无关,即可以起与需要调用的C函数不同的名称。
    最后,TestDll1INSTANCE= (TestDll1)Native.loadLibrary("TestDll1",TestDll1.class);"TestDll1"是调用的库,TestDll1.class指的就是这个接口。
      

  5.   

    不是很了解,不过从你的例子来看
    1.TestDll1 这个是前面C函数生成的库名字吗?
    public interface TestDll1extends Library { //这里的TestDll1可以是任意名字,因为只表示一个接口的名字(TestDll1)Native.loadLibrary("TestDll1",TestDll1.class); //前一个TestDll1和上面定义的接口名字一致,表示把Native.loadLibrary返回的结果强行转换为TestDll1接口,而后一个引号内的TestDll1,应该是C编译生成的Dll的名字2.这里的Library,所有的JNA里面都是这样用的吗?如果我调用另外一个自己的DLL库。
    应该是通用的做法,如果C是采用stdcall 方式输出函数,那么应该定义
    public interface TestDll1extends StdCallLibrary3.双引号里面的,是调用的库吗?那和前面的TestDll1 是什么区别?如果库名和接口名不一样会怎么样?
    和库名要一样,和接口名可以不一样4.TestDll1.class,指的就是这个接口?
    yes5.StdCallLibrary,这个Library又是什么情况?
    上面已经说了,采用stdcall 方式输出函数,就要用StdCallLibrary纯属个人看法