qq_35451343
2021-11-19 16:04
采纳率: 0%
浏览 438
已结题

使用jna调用第三方C++ dll,对方接口返回枚举类型,报错提示Invalid memory access,有偿,有偿

问题遇到的现象和发生背景

做一个读卡功能需要调用第三方提供的动态链接库,对C++不了解,使用jni比较困难,采用的jna去调用dll

问题相关代码,请勿粘贴截图

对方.h头文件显示返回值使用
enum ErrorCodeEnum
{
xx1=..
xx2=..
}

运行结果及报错内容

Exception in thread "main" java.lang.Error: Invalid memory access

我的解答思路和尝试过的方法

按度娘的解释也试过使用int、enum、Structure去接受返回值,一直没成功

我想要达到的结果

jna正常使用,或者能教育一下使用jni解决也可以。

已追

  • 好问题 提建议
  • 收藏

5条回答 默认 最新

  • xiaoan9527 2021-11-19 16:09

    哎,又一个入了jni的坑,加我微信把,给你点之前的经验

    评论
    解决 1 无用
    打赏 举报
  • 急速光粒 2021-11-20 11:17

    这个需要调试一下具体什么问题,jni和c++应该没什么障碍的。

    评论
    解决 无用
    打赏 举报
  • churuxu 2021-11-22 09:11

    调了什么函数,你的代码怎么写的,都具体点放出来,这样别人才好帮你看问题

    另外检查以下JDK跟DLL是否架构一致,例如JDK是否64位DLL是32位就运行不了,可以换一个JDK试试

    评论
    解决 无用
    打赏 举报
  • The man who 2021-11-25 17:38

    用它的结果去接 Structure 因为存的是指针直接对上Java可能访问不上

    评论
    解决 无用
    打赏 举报
  • 听见温暖www 2021-11-26 11:15
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题