从Java中调用带有C接口的DLL

 2023-01-19    382  

问题描述

我正在尝试在第三方DLL中调用本机方法,该方法具有C界面,其中包括:

DWORD ExampleInterfaceMethod( DWORD Mode, LPSTR Header );

我已经成功使用:

从Java中调用带有C接口的DLL

成功加载了DLL

System.loadLibrary("DLLName");

我已经创建了一个方法:

protected native int ExampleInterfaceMethod(int type, int Nth, byte[] name);

此方法似乎没有使用正确的变量类型,因为每当我称之为以下错误时:

java.lang.UnsatisfiedLinkError: com.DLLTest.ExampleInterfaceMethod(II[B)I

为了调用此方法,我需要在Java中使用哪些变量类型,或者我缺少其他内容?

推荐答案

使用JNI,您需要特殊命名的C函数来实现Java native方法.您不能简单地添加native方法来调用现有C函数 – 而是正常的方法是创建”包装器” C函数,该C函数称为现有的c函数,并以正确的方式命名.

您可能想看看 jna .这是JNI围绕JNI的包装器,可让您从Java侧调用C函数,而无需手动编写为此的适应本机代码.

以上所述是小编给大家介绍的从Java中调用带有C接口的DLL,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/25790.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。