有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将可变字节数组传递给DLL函数(通过JNA访问)?

我应该注意到,我是Java的初学者,我想把我用Delphi写的一个项目转换成Java。我需要使用我正在使用的硬件附带的DLL。DLL具有获取和发送信息的功能,这些信息都是用C++编写的。该设备本质上是某种控制器。我正在使用Java本机访问(JNA)来访问DLL函数,并将其映射到Java,Java在很大程度上是自动处理的

DLL有几个函数需要将字符串作为参数传递,并且该函数应该修改该字符串。下面是DLL文档文件中描述的示例函数

int GetVersionStr(char *pcVers, int lMaxLen);

该函数将字符串作为参数,使用设备的当前版本修改该字符串,我可以在任何地方使用该字符串。我最初是在用Delphi编写这个项目时通过传递字符串实现的。但是在Java中,正如我发现的,字符串是不可变的。我了解到StringBuilder通常能完成任务。然而,JNA似乎无法将StringBuilder与C++或字符串或char等价类匹配。如果我能干扰JNA的类匹配代码来做这样的事情

my_c++_string = my_java_string_build.toString()

并使用StringBuilder的“ToString()”方法将String Bu建器对象与C++字符串对象均衡,问题很可能解决。但我真的不知道该怎么做。欢迎任何和所有解决办法。提前谢谢


共 (0) 个答案