package com.esoft.demo;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.NativeLong;
import com.sun.jna.Platform;
import com.sun.jna.Structure;
import com.sun.jna.WString;
public class JNATest {
public static class UserStruct extends Structure{
public NativeLong id;
public WString name;
public int age;
public static class ByReference extends UserStruct implements Structure.ByReference{};
public static class ByValue extends UserStruct implements Structure.ByValue{};
}
// public void sayUser(UserStruct.ByReference struct);
public interface TestDll extends Library{
TestDll INSTANCE = (TestDll)Native.loadLibrary("javatest", TestDll.class);
public void sayUser(UserStruct struct);
public WString sayCoutWchar();
public void sayCout();
}
public interface CLibrary extends Library {
CLibrary INSTANCE = (CLibrary)
Native.loadLibrary((Platform.isWindows() ? "msvcrt" : "c"),
CLibrary.class);
void printf(String format, Object... args);
}
public static void main(String[] args) {
UserStruct userStruct = new UserStruct();
userStruct.id = new NativeLong(100);
userStruct.name = new WString("杜黎明");
userStruct.age = 25;
TestDll.INSTANCE.sayUser(userStruct);
TestDll.INSTANCE.sayCout();
CLibrary.INSTANCE.printf("Hello, World/n");
WString wstr = TestDll.INSTANCE.sayCoutWchar();
System.out.println(wstr.toString());
}
}
动态链接库在资源中。
JNA练习DEMO
最新推荐文章于 2022-07-29 13:31:31 发布