typedef USHORT apiReturn;apiReturn _stdcall ConnectScanner(HANDLE *hScanner, char *szPort, int nBaudRate);上面是VC 的DLL 一个函数的声明,动态库的名字:RFSAPIV2.dll下面是我填的一部分类型声明不知道咋整, 该如何声明呢?
不知是否用下面的格式在JAVA里public static class apiReturn extends Structure
{
public int apiReturn;
}import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
public interface RFSAPIV2 extends Library { RFSAPIV2 INSTANCE = (RFSAPIV2)
Native.loadLibrary("RFSAPIV2",
RFSAPIV2.class);
接下来应该声明 “apiReturn _stdcall ConnectScanner(HANDLE *hScanner, char *szPort, int nBaudRate);”
函数 在这个地方如何声明呢? }
结贴及时 100%结贴率
不知是否用下面的格式在JAVA里public static class apiReturn extends Structure
{
public int apiReturn;
}import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
public interface RFSAPIV2 extends Library { RFSAPIV2 INSTANCE = (RFSAPIV2)
Native.loadLibrary("RFSAPIV2",
RFSAPIV2.class);
接下来应该声明 “apiReturn _stdcall ConnectScanner(HANDLE *hScanner, char *szPort, int nBaudRate);”
函数 在这个地方如何声明呢? }
结贴及时 100%结贴率
“apiReturn _stdcall ConnectScanner(HANDLE *hScanner, char *szPort, int nBaudRate);”
这个函数里的第一个参数
“HANDLE *hScanner” 该如何处理呢?
怎么声明? int ConnectScanner("????",String port, int baud);
另在 VC的 DLL 中,函数的返回 apiReturn 我在JAVA里的声明是:
public static class apiReturn extends Structure
{
public int apiReturn;
}
因此,上面的声明“int ConnectScanner("????",String port, int baud);”
前面的返回类型用int 应该不妥吧?
Pointer
java的指针是给隐藏了啊
CODE:class HANDLE extends PointerType {
private boolean immutable;
public HANDLE() { }
public HANDLE(Pointer p) { setPointer(p); immutable = true; }
public Object fromNative(Object nativeValue, FromNativeContext context) {
Object o = super.fromNative(nativeValue, context);
if (INVALID_HANDLE_VALUE.equals(o))
return INVALID_HANDLE_VALUE;
return o;
}
public void setPointer(Pointer p) {
if (immutable)
throw new UnsupportedOperationException("immutable reference");
super.setPointer(p);
}
}
添加进工程时 ,还未编译,,应该是代码语法检查时
if (INVALID_HANDLE_VALUE.equals(o))
return INVALID_HANDLE_VALUE;在这个地方提示错误:
为找到的符号:INVALID_HANDLE_VALUE 没用哟
又换成 BYREFERENCE , LONGBYREFERENCE 等都试过了
还是不行 最后无奈,居然给我给摸索了一个方法 哈