2

我已经工作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, Class interfaceClass, Map options)

从给定的共享库加载库接口,提供显式接口类和库的选项映射。如果未检测到库选项,则映射被解释为 Java 方法名称到本机函数名称的映射。如果 name 为 null,则尝试映射到当前进程。

以上是什么map of options for the library意思?

4

1 回答 1

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);
于 2013-05-09T07:33:03.570 回答