メモ、備忘録、その他雑記を記載します。
ただし、このHPに記載している情報を利用した結果 損失・損害等が発生したとしても筆者は責任を持ちません。
Java Native Interface (JNI) は、Javaプラットフォームにおいて、Javaで記述されたプログラムと、他の言語(たとえばCやC++など)で書かれた、実際のCPUの上で動作するコード(ネイティブコード)とを連携するためのインタフェース仕様である。
ここではJNIを使用して、VC6.0で作成したMFC DLL内の関数を呼び出す処理を記載する。
1.javaファイル作成
JniTest.javaを作成。中身を以下のように記載しておく。
public class JniTest {
static {
System.loadLibrary("JniTestDll");
}
// ネイティブ関数1
static native void JniTestFnc1();
// ネイティブ関数2
static native void JniTestFnc2(String str);
public static void main(String args[]) {
// ネイティブ関数1呼び出し
JniTestFnc1();
// ネイティブ関数2呼び出し
JniTestFnc2("JNI test Fnc2!");
}
}
※呼び出すC/C++のDLLファイル名は「JniTestDll.dll」と指定している
※呼び出すC/C++の関数名は「JniTestFnc1」「JniTestFnc2」と指定している
2.javaコンパイル
>javac JniTest.java
3.C/C++ヘッダファイル生成
>javah JniTest
→これで「JniTest.h」が生成される。
4.C/C++(ここではC++)DLLファイル生成
VC6.0でDLLプロジェクトを生成する(今回はMFC使用のプロジェクトを生成)
3.で作成したヘッダファイルをプロジェクトに追加する。
3.で作成したヘッダファイルに合わせた関数の中身を実装する。
プロジェクトの設定で以下のインクルードパス追加する。
C:\Program Files\Java\jdk1.6.0_24\include,C:\Program Files\Java\jdk1.6.0_24\include\win32
※JKDを「C:\Program Files\Java\jdk1.6.0_24」にインストールした場合
Release ビルドして「JniTestDll.dll」を生成し、1.のjavaファイルと同パスに置いておく
5.動作確認
>java JniTest
→4.で実装した処理を行える。
PR
コメントを書く