jna


<?xml version="1.0" encoding="UTF-8"?>
"http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4.0.0

    org.example
    jna_test
    1.0-SNAPSHOT
    
        
            net.java.dev.jna
            jna
            5.3.1
        
    

public class JnaTest {
    public static void main(String[] args) {
        MsvcrtLibrary.INSTANCE.printf("Hello, World\n");
    }
}
import com.sun.jna.Library;
import com.sun.jna.Native;

public interface MsvcrtLibrary extends Library {
    //加载动态库
    MsvcrtLibrary INSTANCE = Native.load("msvcrt", MsvcrtLibrary.class);

    void printf(String format, Object... args);
}

Default Type Mappings

Java primitive types (and their object equivalents) map directly to the native C type of the same size.

Native Type Size Java Type Common Windows Types
char 8-bit integer byte BYTE, TCHAR
short 16-bit integer short WORD
wchar_t 16/32-bit character char TCHAR
int 32-bit integer int DWORD
int boolean value boolean BOOL
long 32/64-bit integer NativeLong LONG
long long 64-bit integer long __int64
float 32-bit FP float  
double 64-bit FP double  
char* C string String LPTCSTR
void* pointer Pointer LPVOID, HANDLE, LPXXX

Unsigned types use the same mappings as signed types. C enums are usually interchangeable with "int".

参考链接: https://github.com/twall/jna/blob/master/www/Mappings.md