日期:2014-05-20  浏览次数:21180 次

JNA回调函数的使用
我现在想用jna调用dll中的c++程序,程序是运行了,可回调函数一直没有执行,求赐教:
这是interface中的代码:
public interface HvCallback {	
public static interface PLATE_NO_CALLBACK extends Callback {
int invoke(HvResult lpParam, String pString, int dwStrLen, int dwType);
}
}

这是对接口实现的代码:

public class HvCallBackClass {
    public static class PlateNoCallBack implements PLATE_NO_CALLBACK {
        @Override
        public int invoke(HvResult lpParam, String pString, int dwStrLen, int dwType) {
            System.out.println("回调会的数据:");
            return 1;
        }
    }
}

这是c++中的代码

typedef INT (CDECL* HVAPI_CALLBACK_TFD_STRING)(
PVOID   pUserData, 
LPCSTR  pString, 
DWORD   dwStrLen,
DWORD   dwType
)

这是执行的代码

static public PlateNoCallBack plateNoFunction = new PlateNoCallBack();
int resultReceive2 = HVInterface.INSTANCE.HVAPI_SetCallBackEx(DevResult.hv_devHandle, plateNoFunction, 
DevResult, 0, CALLBACK_TYPE_TFD_STRING,null);

我感觉执行时的代码不会有错,有两个地方很可能出错
(1)是在c++中invoke参数传错了
(2)invoke不是自动启动的
自己尝试了修改了两天了,实在没办法了,一起探讨下,在线等!!!
JNA dll callback

------解决方案--------------------
我也在学,有人会不,一起求赐教