卷起来@_@ 2021-05-11 16:42 采纳率: 0%
浏览 22

jna 调用 dll 文件函数有自定义参数问题

首先请大佬先看问题
!!测试文件,函数名SpectrumH_IDP,输入浮点型一维数组,输出1长整型,输出2浮点型一维数组.!!


现在请看我的代码 ,我自己写了个dll 跑起来没问题

jna 接口
package com.company.interJNA;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
import com.sun.jna.Pointer;

public interface JNA extends Library {
//    public int Transfer_Ethernet_EX(String filename,int key);
//    public int Transfer_Ethernet(String filename);



     JNA testdll= (JNA) Native.load("C:\\Users\\LIJIAZ\\source\\repos\\TestDll\\Release\\TESTDLL",JNA.class);
    int add(int a,int b);

    JNA lv= (JNA) Native.load("C:\\Users\\LIJIAZ\\Desktop\\JNA\\lvanlys",JNA.class);
    long SpectrumH_IDP(Pointer xH,Long f);

}


main  主函数

package com.company.interJNA;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
import com.sun.jna.Pointer;

public interface JNA extends Library {
//    public int Transfer_Ethernet_EX(String filename,int key);
//    public int Transfer_Ethernet(String filename);



     JNA testdll= (JNA) Native.load("C:\\Users\\LIJIAZ\\source\\repos\\TestDll\\Release\\TESTDLL",JNA.class);
    int add(int a,int b);

    JNA lv= (JNA) Native.load("C:\\Users\\LIJIAZ\\Desktop\\JNA\\lvanlys",JNA.class);
    long SpectrumH_IDP(Pointer xH,Long f);
}

因为我不知道 SpectrumH_IDP函数的第二个参数类型 我就乱写一些碰碰运气

报错

系统===true
dll add value=4
4
Exception in thread "main" java.lang.Error: Invalid memory access
at com.sun.jna.Native.invokeLong(Native Method)
at com.sun.jna.Function.invoke(Function.java:428)
at com.sun.jna.Function.invoke(Function.java:361)
at com.sun.jna.Library$Handler.invoke(Library.java:265)
at sun.proxy.$Proxy0.SpectrumH_IDP(Unknown Source)
at com.company.Main.main(Main.java from InputFileObject:21)
4
Process finished with exit code 1


我自己写的可以正常输出 第二个dll  网上说是类型不匹配
int32_t SpectrumH_IDP(void *xH, InstanceDataPtr *tidp
求救啊啊  大佬 弄了几周了
 

  • 写回答

3条回答 默认 最新

  • CSDN专家-Time 2021-05-11 16:54
    关注
    Invalid memory access
    at com.sun.jna.Native.invokeLong(Native Method)

    应该是你参数没调用对

    评论

报告相同问题?

悬赏问题

  • ¥15 odoo17处理受托加工产品
  • ¥15 为什么我安装了Homebrew之后,无法像官网的那样通过执行命令安装Watchman
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES
  • ¥15 结构功能耦合指标计算
  • ¥50 AI大模型精调(百度千帆、飞浆)
  • ¥15 非科班怎么跑代码?如何导数据和调参
  • ¥15 福州市的全人群死因监测点死亡原因报表
  • ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度