JNA调用报错lang.IllegalArgumentException: Unrecognized calling convention: 1
来源:互联网 发布:mac pro 如何重装系统 编辑:程序博客网 时间:2024/06/12 20:33
现象:在windows下掉用DLL正常,在linux下报错 lang.IllegalArgumentException: Unrecognized calling convention: 1
原因 :调用的命名约束不同,windows下使用stdcall,,如果没猜错,JNA的实现类继承了 StdllCallLibrary
解决方法:linux下 JNA的实现类继承了 Library,不要继承StdllCallLibrary,笔者本写了windows和linux两套代 码,后发现
在windows下继承Library类也是可以的,like that(通用,未发现其他错误):
class MyLibrary extends Library{
MyLibrary INSTANCE = (MyLibrary ) Native.loadLibrary("mysdk", MyLibrary .class);
}
另外windows下可以这样实现
class Win32Library extends StdllCallLibrary{
Win32Library INSTANCE = (Win32Library ) Native.loadLibrary("mysdk", Win32Library .class);
}
ps:windows下回调函数可继承 StdCallCallback,使用继承Callback的方式在windows和linux都适用,笔者经过简单试验,具体情况还需具体分析!!!
1 0
- JNA调用报错lang.IllegalArgumentException: Unrecognized calling convention: 1
- 调用约定(Calling convention)
- 调用约定(Calling convention)
- 调用约定 Calling convention
- 调用约定(Calling convention)
- 调用约定(Calling convention)
- 调用约定(Calling convention)
- 调用约定(Calling convention)
- 调用约定(calling convention)(转)
- [c++] 调用约定 calling convention
- 函数调用约定(Calling Convention)
- 报错:java.lang.IllegalArgumentException
- 调用约定的说明(calling convention)
- 函数调用约定(Calling Convention)(转)
- 函数的调用约定(calling convention)
- C-函数调用惯例(Calling Convention)
- Cookie报错java.lang.IllegalArgumentException
- Tomcat6启动报错java.lang.IllegalArgumentException:
- opencv_traincascade的参数解释——(LBP+cascade)行人检测
- 原生JS--解读Element
- angular 实时更新模板视图的方法$apply
- Windows下整合Apache2.2和Tomcat6.0 集群与负载均衡
- 内存、并发什么的
- JNA调用报错lang.IllegalArgumentException: Unrecognized calling convention: 1
- java 重载
- 深度剖析类加载器系列文章:二、类的主动使用和被动使用
- java+redis+spring mvc实现发布订阅(不同项目间)
- js迭代器模式——内部迭代器
- Hibernate 一些简单错误提示信息
- [转载] 好文保存
- 数据结构的基本概念
- react 事件 (笔记)