JNA调用DLL,JNative函数回调

发布于 2021-12-08 17:46:11 字数 1176 浏览 852 评论 2

我手头上现在有一个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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情场扛把子 2021-12-08 18:54:32

请问楼主最后解决了吗?

执手闯天涯 2021-12-08 17:56:20

你的写法有问题吧。请参考我的博客。http://my.oschina.net/kkrgwbj/blog/547598

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文