com.sun.jna
public interface Library
MyNativeLibrary INSTANCE = (MyNativeLibrary)
Native.loadLibrary("mylib", MyNativeLibrary.class);
By convention, method names are identical to the native names, although you can map java names to different native names by providing a FunctionMapper as a value for key OPTION_FUNCTION_MAPPER in the options map passed to the Native call.
Although the names for structures and structure fields may be chosen arbitrarily, they should correspond as closely as possible to the native definitions. The same is true for parameter names.
This interface supports multiple, concurrent invocations of any library methods on the Java side. Check your library documentation for its multi-threading requirements on the native side. If a library is not safe for simultaneous multi-threaded access, consider using Native to prevent simultaneous multi-threaded access to the native code.
Optional fields
Interface options will be automatically propagated to structures defined
within the library provided a call to
loadLibrary is made prior to instantiating
any of those structures. One common way of ensuring this is to declare
an INSTANCE field in the interface which holds the
loadLibrary
result.
OPTIONS (an instance of Map), TYPE_MAPPER (an instance of TypeMapper) and STRUCTURE_ALIGNMENT (one of the alignment types defined in Structure) may also be defined. If no instance of the interface has been instantiated, these fields will be used to determine customization settings for structures and methods defined within the interface.
Nested Class Summary | |
---|---|
static class | Library.Handler |
Field Summary | |
---|---|
String | OPTION_ALLOW_OBJECTS Option key for a boolean flag to allow any Java class instance as a
parameter. |
String | OPTION_CALLING_CONVENTION Calling convention for the entire library. |
String | OPTION_FUNCTION_MAPPER Option key for a FunctionMapper for the library. |
String | OPTION_INVOCATION_MAPPER Option key for an InvocationMapper for the library. |
String | OPTION_STRUCTURE_ALIGNMENT Option key for structure alignment type (Integer), which should
be one of the predefined alignment types in Structure. |
String | OPTION_TYPE_MAPPER Option key for a TypeMapper for the library. |