通过JNA在C和java中的不同行为

时间:2014-06-02 19:07:19

标签: java c jna

我试图使用JNA(或BridJ,从结果是相同的)从java访问扫描程序。从C调用dll时,扫描程序正确响应打开(与扫描仪打开通信),扫描并关闭(关闭扫描程序会话)命令。当我在Java中尝试相同的代码时,对open()的调用以-3状态代码响应,这意味着无法找到扫描程序。如果在从C调用时关闭或断开扫描仪,则会得到相同的结果。

错误的最简单代码就是调用open,并检查它是否成功。 C头中open方法的声明如下:

extern int APIENTRY LS100_Open(HWND hWnd, HANDLE Hinst, char Type_com);

我的dll的java界面是:

public interface LS100 extends StdCallLibrary {
public LS100 instance = (LS100)Native.loadLibrary("Ls100", LS100.class);

    public final static byte SUSPENSIVE_MODE = 'S';
    public final static byte NOT_SUSPENSIVE_MODE = 'T';
    public int LS100_Open(HWND hWnd, HANDLE Hinst, byte Type_com);
}

我现在的主要方法是简单地调用LS100.LS100_Open(null, null, LS100.SUSPENSIVE_MODE)。 Null句柄在C中工作正常(使用NULL)。

任何帮助都将不胜感激。

0 个答案:

没有答案