java中有没有类似win api中的回调函数给dll调用呢?

来源:百度知道 编辑:UC知道 时间:2024/05/24 19:05:50
c头文件中有一个回调函数,如下:typedef void (CALLBACK *CAPPLAYCALLBACK)(long lPlayHandle, DWORD dwDataType ,BYTE *pBuffer, DWORD dwBufSize, tagFrameAttrib attrib,DWORD dwCustom);
有一个方法:JWCLIENT_API long _stdcall FW_CLIENT_DownFileByName_Storage(long lConnectHandle, char* sFileName,long lPlayHandle,CAPDATACALLBACK lpfnCallBack,DWORD dwCustom);里面需要传入一个回调函数,但是在JNI定义JAVA 的native方法时,如何定义一个回调函数?我仅知道c#中可以 public delegate void CAPNETERRORCALLBACK(Int32 lConnectHandle, uint dwErrorType, uint dwCustom);来定义,但是JAVA如何定义呢?请高手帮忙!谢谢,希望可以贴出代码
qdmmy6,我的问题就是用JNI做的,你的回答答非所问啊!

有两种情况,第一种是java首先调用C,那么java和C之间调用的时候,会传递一个env变量,类型记得是JAVAENV。c中利用这个参数可以直接使用java中的方法。第二种是C直接调用java,那么c首先要用一个api启动一个java虚拟机,然后获取到上面类似的env,接着直接调用。

jndi

JNI