JNA调用DLL,JNative函数回调
我手头上现在有一个DLL,在DLL 中有一个函数:_GoSdk_Version@0 ,JNA中使用什么协议可以调用
__stdcall会使导出函数名字前面加一个下划线,后面加一个@再加上参数的字节数,
比如_MyFunction@4的参数(int iVariant)就是4个字节 __fastcall与 __stdcall
类似,不过前面没有下划线,而是一个@,比如@MyFunction@4 __cdecl则是始函数名
如
_GoSdk_Version@0
public interface GoSdk extends StdCallLibrary {
//加载动态链接库,把库dll文件默认放到系统C盘window目录下的system32文件夹下或者到java的bin目录
GoSdk instance = (GoSdk)Native.loadLibrary("GoSdk", GoSdk.class);
//定义接口
public int _GoSdk_Version@0 ();//定义接口 -编译无法通过
}
使用JNative 可以正常调用
JNative jna = new JNative("GoSdk.dll","_GoSdk_Version@0",Convention.STDCALL);//初始化DLL
jna.invoke();//执行函数
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请问楼主最后解决了吗?
你的写法有问题吧。请参考我的博客。http://my.oschina.net/kkrgwbj/blog/547598