【发布时间】:2015-08-17 05:05:17
【问题描述】:
我需要使用 JNA 从 Java 调用 dll。
我需要调用的dll的头文件中的函数定义是这样的:
bool DmgrGetVersion(char * szVersion);
所以我需要在Java中重新定义一个接口,函数变成:
boolean DmgrGetVersion(String szVersion);
但是,我需要通过引用传递字符串,这意味着我传入的字符串变量需要从函数的参数中接收一个新值。我如何实现这一目标? (例如,如果我调用 DmgrGetVersion(ver) 并且函数中的 szVersion 在函数末尾被分配“1.0.1”,那么ver 也需要被分配“1.0.1”)
我听很多人说String[] str = new String[1]、StringBuilder或StringBuffer可以用,但不适用于我的情况,因为我没有dll的源代码,无法更改函数的内容。 (我只有头文件和 .lib 和 .dll 文件)
顺便说一句,JNA 文档中没有 char* 的类型转换。 (仅 char 和 const char* 和 char**)
那么我还有可能实现我的需求吗?谢谢大家
【问题讨论】:
标签: java pass-by-reference jna