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

ライブラリのオプションを保持するマップです。そのようなオプションの 1 つが関数マッパーです。以下に例を示します。

    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 に答える