-
jna怎么得到dll中CHAR*的返回字符串10
我想得到.dll中一个回调函数的返回的字符串
c:
typedef INT32 ( *POnRecvMsgCallback)(
CHAR *pDID,
UINT32 nMsgType,
CHAR *pMsg,
UINT32 nMsgSize,
VOID *pUserData);
java:
public interface POnRecvMsgCallback extends StdCallCallback {
//int invoke(String pDID,int nMsgType,ByteByReference pMsg,int nMsgSize,Pointer pUserData);使用ByteByReference只能返回一个byte,不能得到字符串的值
//int invoke(String pDID,int nMsgType,String pMsg,int nMsgSize,Pointer pUserData);用String返回值为null2014年11月29日 14:04
目前还没有答案
相关推荐
JNA通过映射DLL中的函数到Java类的方法来实现调用。你需要定义一个接口,该接口的每个方法对应DLL中的一个函数,然后使用`NativeLibrary`类加载DLL,并将接口实例化,这样就可以在Java中直接调用DLL函数了。 1. **...
采用java jna4.1 调用C编写的dll文件,获得返回结果,且获得返回参数的例子
在上述代码中,`MyDllLibrary`接口扩展了`Library`接口,`callDllFunction`是DLL中的一个函数,接受一个字符串参数并返回一个整数。 接下来,你需要加载DLL。JNA通过`LibraryLoader`来加载本地库,你可以这样做: ...
在“JNA调用DLL完整实例demo”中,我们首先需要创建一个Java接口,这个接口将代表DLL中的函数。例如,如果DLL中有一个名为`recvWork`的函数,我们的Java接口可能会这样定义: ```java public interface ...
// 调用DLL中的add函数 int result = myDLL.add(5, 7); System.out.println("结果: " + result); } } ``` **注意事项** 1. **32位 vs 64位**: 如果你的DLL是32位的,确保你的Java运行环境也是32位;如果是64位,...
3. **调用DLL函数**:在你的主程序中,你可以直接通过`MyDllLibrary.INSTANCE.addNumbers(a, b)`来调用DLL中的函数。例如: ```java public class Main { public static void main(String[] args) { int result ...
4. **调用DLL函数**:通过接口实例调用DLL中的函数,传递必要的参数,包括回调函数接口实例。 5. **处理回调**:在定义的回调函数接口中实现具体的逻辑,确保与DLL的约定一致。 6. **测试和优化**:编写测试用例...
同时,如果DLL中的函数有更复杂的参数类型,如结构体或指针,JNA提供了类型映射机制来处理这些情况。 总之,"JNA调用DLL函数"这个主题涵盖了Java平台的本地调用能力,以及如何利用这种能力与C语言编写的动态链接库...
这个接口需要使用`@Native`注解,并且方法名应与DLL中的函数名相同。例如,如果DLL有一个名为`AddNumbers`的函数,接收两个整数参数并返回它们的和,可以这样定义: ```java public interface MyDLL extends ...
2. 创建一个Java接口,该接口代表DLL中的函数。每个方法的注解`@Native`表示它将被映射到本地函数。 3. 使用`Library`注解指定DLL的名称,如`@Library("mydll")`。 **步骤3:调用DLL函数** 1. 创建`NativeLibrary`...
- **JNA** 极大地简化了这一过程,几乎无需离开Java环境就能调用DLL中的函数。 #### JNA 技术原理 JNA通过一个小型的JNI库来实现对本地代码的动态调用。其主要特点包括: - 开发者仅需通过Java接口描述目标本地库的...
这样的工具可以帮助开发者了解DLL中可用的函数,以及它们的参数和返回类型。这对于使用JNA时确定需要调用的函数非常有用。通常,这些工具会显示函数的导出信息,包括函数名、参数数量和类型等。 **JNA的类型映射** ...
标题中的“最简单的JNA调用DLL”是指Java Native Access(JNA)库在Java程序中调用Windows Dynamic Link Library (DLL) 文件的一种基础方法。JNA是Java平台上的一个开源库,它允许Java代码与本地平台API进行交互,...
第一个参数是dll的名称(不包含.dll扩展名),第二个参数是接口类,这样JNA就知道如何调用dll中的函数。 4. **调用dll函数**:一旦接口被加载,就可以像调用普通Java方法一样调用dll的函数了。 ```java int ...
java后端springBoot框架使用jna调取C语言的dll接口(停车场道闸接口) 包含构造体的调用, 回调函数的调用,JNA和C / C ++的数据类型映射,Pointer类型的使用
在标题中提到的“JNA调用.dll文件或.so动态链接库的代码demo”,这是一个实际应用JNA来调用本地动态库的示例。下面我们将深入探讨JNA的工作原理、使用步骤以及如何处理.dll和.so文件。 1. **JNA工作原理**: JNA...
注:下文中的 *** 代表文件名中的版本号。 # 【jna-***.jar中文文档.zip】 中包含: 中文文档:【jna-***-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【jna-***.jar下载地址(官方地址+国内镜像地址).txt...
每个函数声明应匹配DLL中的函数签名,包括参数类型和返回值类型。例如: ```java public interface DahuaSdk extends Library { DahuaSdk INSTANCE = (DahuaSdk) Native.load("DahuaSdk", DahuaSdk.class); int ...
注:下文中的 *** 代表文件名中的版本号。 # 【jna-***.jar中文文档.zip】 中包含: 中文文档:【jna-***-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【jna-***.jar下载地址(官方地址+国内镜像地址).txt...