Native.loadLibrary中的选项

时间:2013-05-09 07:19:41

标签: java jna

我已经在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的意思?

1 个答案:

答案 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);