|
|||||||||
jna の変更点
Java から DLL を呼ぶ方法~
----
* 制約とか前提とか [#hd63677b]
- jna-4.2.0.jar
- 今回試したのは win32 の DLL 呼び出しなので、so 等ではあてはまらないかも
- 基本的には extern C の DLL しか呼べないと思ったほうがいい
-- jna-package の方にあるけど、面倒そう
-- 今回は VisualStudio で C のラッパーを書いた。
-- jcom とか jnaerator でもできそうだけどまた今度
- COM の DLL はラッパーの DLL 書いたほうが楽だと思う
- 32bit の DLL 呼び出しは 32 bit の java でしか動かない
- 古い DLL の場合は文字コードはえてして SJIS なのでラッパーを書くかどこかでがんばる
* java [#z0b521fc]
コンパイル
javac -cp jna-4.2.0.jar HelloJNA.java 2>&1 |nkf -w
実行
java -cp ".;jna-4.2.0.jar" HelloJNA 2>&1 | nkf -w
* sample [#oc749987]
#pre{{
import com.sun.jna.*;
import com.sun.jna.ptr.*;
public class HelloJNA{
public interface User32Dll extends Library {
User32Dll INSTANCE = (User32Dll)Native.loadLibrary("user32.dll", User32Dll.class);
int MessageBoxA(int hWnd, String lpText, String lpCaption, int uType);
}
public static final void main(String[] args){
User32Dll.INSTANCE.MessageBoxA(0,"sample",args[0],0x00000000);
}
}
}}
|
|||||||||