java调用dll文件需要使用回调函数作为公开函数的参数时,用以下方法实现:
首先,看c++中定义的dll公开函数:
typedef void (*ccback)(char *name ,int length); int dllFunction(char *ip, int port, ccback cc);
引用dll文件方法不再赘述,直接看回调函数的实现,需要通过java的接口实现:
import com.sun.jna.Library;import com.sun.jna.Native;import com.sun.jna.Callback;import com.test.DllCallBackTest.JnaCallBackDll.SCBack_Impl;public class DllCallBackTest {public interface JnaCallBackDll extends Library {public static JnaCallBackDll instance = (JnaCallBackDll) Native.loadLibrary("src/main/resources/Dll2.dll",JnaCallBackDll.class);int dllFunction(String host, int port, Callback callback);public interface SCBack extends Callback {public void MessageHandle(String name, int length);}public static class SCBack_Impl implements SCBack {public voi