繁体   English   中英

在Java JNA中将本机函数传递给参考变量

[英]Passing Native Function a reference variable in Java JNA

我正在尝试编写Java小程序以连接到条形码扫描仪并读取数据。 条形码扫描仪随附一个dll文件,该文件具有访问它的功能。 我没有Java的丰富经验,但是我已经弄清楚了如何使用JNA加载dll并调用本机函数。 某些功能可以正常工作,但可以返回我似乎无法使用的实际条形码的功能。 它需要一个字符数组作为参数,并且在JNA中不是通过引用传递的,我已经尝试过使用Pointer类,并且什么也无法工作。 本机函数定义如下。

NoMangle long DLL_IMPORT_EXPORT csp2GetPacket(char szBarData [],long nBarcodeNumber,long nMaxLength)

函数调用后,szBarData []变量应该包含条形码数据。

我尝试以几种不同的方式设置JNA映射,使szBarData []参数成为char数组,字符串,字节数组和指针,并且没有运气。

在Visual Basic中,您可以传递szBarData []一个字符串,它可以工作,只是不确定如何使用JNA在Java中完成此操作。

由于您期望目标函数填充缓冲区,因此您不能传递String (只读),而必须传递byte[]

还要确保您没有使用Java long来表示本地long NativeLong存在NativeLong类。

如果返回的是NUL终止的C字符串,则可以使用Native.toString(byte[])转换为String

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM