1、jna是什麼
jna是java native access的簡稱,用他可以調用C、C++代碼,特別是windows中強大的庫檔案(dll,在linux下是so檔案),這樣java就可以操控底層的一些東西,比如調用加密機、智慧卡之類的
2、jna下載
在maven下直接找jna就有,對應的jar包是jna-3.3.0.jar
3、調用msvcrt.dll(這是windows內建動態連結程式庫 ),不用找,他在system32下
Java代碼
- package com.jnastudy.test;
-
- import com.sun.jna.Library;
- import com.sun.jna.Native;
- import com.sun.jna.Platform;
- import com.sun.jna.platform.win32.Kernel32;
- import com.sun.jna.platform.win32.User32;
-
- public class JNATest {
- //編寫一個介面,必須繼承Library,他要在載入庫檔案時用
- public interface CLibrary extends Library {
- //載入庫檔案,Platform.isWindows()可以判斷系統類別型
- CLibrary INSTANCE = (CLibrary) Native.loadLibrary(
- (Platform.isWindows() ? "msvcrt" : "c"), CLibrary.class);
- //定義方法,與c語言標準的一致
- void printf(String format, Object... args);
- }
- public static void main(String[] args) {
- //調用
- CLibrary.INSTANCE.printf("%d----%f--",5,5.2f);
-
- final User32 user32 = User32.INSTANCE;
- System.out.println(user32);
- final Kernel32 kernel32 = Kernel32.INSTANCE;
- System.out.println(kernel32.toString());
- }
- }
4、java類型和C類型的映射
轉載:http://ligson.iteye.com/blog/1294518