我已经在JNA
工作了一段时间了。但有一件事,我还没有理解。例如,在加载库时:
Map<String, Integer> options = new HashMap<String, Integer>();
options.put(Library.OPTION_CALLING_CONVENTION, StdCallLibrary.STDCALL_CONVENTION);
this.EDSDK = (EdSdkLibrary) Native.loadLibrary("EDSDK/dll/EDSDK.dll", EdSdkLibrary.class, options);
上面的options
究竟是什么?
api说:
public static Object loadLibrary(String name, 类interfaceClass, 地图选项)
从给定的共享库加载库接口,提供显式接口类和库的选项映射。如果未检测到库选项,则映射将被解释为Java方法名称到本机函数名称的映射。 如果name为null,则尝试映射到当前进程。
高于map of options for the library
的意思?
答案 0 :(得分:3)
这是一张包含图书馆选项的地图。一个这样的选项是函数映射器。 您可以在下面找到一个示例:
System.setProperty("jna.library.path","SiUSBXp.dll");
HashMap<String, StdCallFunctionMapper> optionMap = new HashMap<String, StdCallFunctionMapper>();
StdCallFunctionMapper myMapper = new StdCallFunctionMapper();
optionMap.put(Library.OPTION_FUNCTION_MAPPER, myMapper);
INSTANCE = (SiUSBXp) Native.loadLibrary("SiUSBXp", SiUSBXp.class, optionMap);