int SbsGetConnectedDevices(TCHAR szDevices[26], LPDWORD lpdwLength);
java调用时候TCHAR和LPDWORD类型对应java中的什么类型呢?我用的的jna调用
java调用时候TCHAR和LPDWORD类型对应java中的什么类型呢?我用的的jna调用
解决方案 »
- 黑马程序员Java+Android视频下载
- 求教一个java和数据库交互的小程序
- swing中哪个控件可以实现listbox的功能啊(紧急~~~~)
- 如何获得这个格式的时间?
- Applet中如何添加JList控件(初学者)
- 急问关于配置
- 帮我分析分析程序,呵呵,有些地方不是很明白
- cmd中显示不了java程序中的中文字
- 保存数据时,中文出错?
- 高分请教一个很简单的关于textArea的问题(要答辩了很着急:)
- java.net.URLEncoder.encode提示为下划线 表示过时
- 实现两个接口的问题 String ITalk.hello()和OutputStream IWrite.hello()
LPDWORD是c++中的指针类型,java中没有指针这一说了!
用这个 com.sun.jna.ptr.IntByReferencepublic interface KernelTest extends StdCallLibrary {
int SbsGetConnectedDevices(char[] devices, com.sun.jna.ptr.IntByReference number);
}
那是搞定了还是没搞定? 我用的方法不可以吗?com.sun.jna.ptr.IntByReference 就是对应LPDWORD的传指针进去说明其实不是给JAVA用的哇 一般写给Java的不会搞个指针进去的
用非UNICODE版本时用byte[]+IntByReference
UNICODE版本时用char[]+IntByReference调用时候还需注意的是数组和IntByReference都需要预先初始化。
byte[] 先要分配足够长度,楼主的例子是 new byte[26]IntByReference要赋值数组长度。楼主的例子是IntByReference在调用之前要赋值26.
调用返回后要根据IntByReference返回的数值截断byte数组.很大的可能是楼主调用失败的原因是没有对IntByReference赋值。