使用JNA将数组从java传递到dll函数

使用JNA将数组从java传递到dll函数,java,c,dll,wrapper,jna,Java,C,Dll,Wrapper,Jna,我想把Java数组作为参数传递给c dll抛出JNA, 这是我的密码: import com.sun.jna.*; public class Javatest { public interface CLibrary extends Library { CLibrary INSTANCE = (CLibrary) Native.loadLibrary( "test", CLibrary.class); void test(Point

我想把Java数组作为参数传递给c dll抛出JNA, 这是我的密码:

import com.sun.jna.*;

public class Javatest {
    public interface CLibrary extends Library {
        CLibrary INSTANCE = (CLibrary) Native.loadLibrary(
            "test", CLibrary.class);
        void test(Pointer p,int width);
    }

    public static void main(String[] args) {
        Pointer p = new Memory(5*Native.getNativeSize(Double.TYPE));
        for (int i = 0; i < 5; i++) {
            p.setDouble(i*Native.getNativeSize(Double.TYPE),5);
        }
        CLibrary.INSTANCE.test(p,5);
    }
}
导入com.sun.jna.*; 公共类Javatest{ 公共接口CLibrary扩展库{ CLibrary实例=(CLibrary)Native.loadLibrary( “测试”,CLibrary.class); 无效测试(指针p,整数宽度); } 公共静态void main(字符串[]args){ 指针p=新内存(5*Native.getNativeSize(Double.TYPE)); 对于(int i=0;i<5;i++){ p、 setDouble(i*Native.getNativeSize(Double.TYPE),5); } CLibrary.INSTANCE.test(p,5); } } C代码:

#include <stdio.h>
__declspec(dllexport) int  test(double *a,int width){
for(int i =0 ; i<width;i++){
        printf("%d",a[i]);

}
return 0;
}
#包括
__declspec(dllexport)整数测试(双*a,整数宽度){

对于(int i=0;i您的
printf
格式有问题:
%d
用于整数。请尝试
%f

新结果正常!!