Primitive array arguments (including struct
s) are represented by their corresponding Java types. For example:
// Original C declarations
void fill_buffer(int *buf, int len);
void fill_buffer(int buf[], int len); // same thing with array syntax
// Equivalent JNA mapping
void fill_buffer(int[] buf, int len);
NOTE: if the parameter is to be used by the native function outside thescope of the function call, you must use Memory
or anNIO Buffer. The memory provided by a Java primitive array will only be validfor use by the native code for the duration of the function call.
Arrays of C strings (the char* argv[]
to the C main
,for example), may be represented by String[]
in Java code. JNAwill pass an equivalent array with a NULL final element.