2.3 JavaでDXライブラリを使う
Eclipseを立ち上げます。
ファイル > 新規 > Javaプロジェクト を選択します。
名前は何でもいいですが、ここでは「DxLibGames」としました。
パッケージエクスプローラーの「src」を右クリックして、「新規」>「パッケージ」を選びます。
このパッケージ名は前章でdllを作った時に付けた関数名の前の文字列に関係しますので、注意して下さい。
Java_net_dixq_dxjava_libs_DxLibInit()
というdllの関数名は
Java_パッケージ名_関数名()
となっています。
ここでは、パッケージ名を「net.dixq.dxjava.libs」としたので、上記のようになっています。
続いて、パッケージの中に「DxJava」と「Main」のクラスを追加して下さい。
まず、DxJava.javaには以下のように記述します。
package net.dixq.dxjava.libs; public class DxJava { static { System.loadLibrary("DxJava"); } public native int DxLibInit(); public native int DxLibEnd (); }
ライブラリ名は先ほど生成したDxJava.dllです。「.dll」は付けません。
.dllで定義した関数はnativeを付けて宣言します。
それでは、これをMainから呼び出してみましょう。
以下のようにMain.javaを書き換えて下さい。
package net.dixq.dxjava.libs;
public class Main {
public static void main(String[] args) {
DxJava dx = new DxJava();
dx.DxLibInit();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {}
dx.DxLibEnd();
}
}
これでJavaからDXライブラリの DxLib_Init(); をコールして3秒後に DxLib_End(); をコールして終了するコードが出来ました。
最後にdllをimportして利用可能にして実行して見ましょう。
パッケージエクスプローラーで右クリックし「インポート」>「一般」>「ファイルシステム」。
「参照」から先ほど作ったDxJava.dllのあるReleaseフォルダを指定し、「DxJava.dll」を選択し「完了」。
後は Ctrl + F11 で実行すれば実行可能です。
実行結果、画面が3秒ほど真っ黒になった後、普通の画面に戻れば完成です。
※ トラブルシューティング※
「
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
メソッド DxLibInit() は型 DxJava で未定義です
」
が出る時は関数名が違う可能性が高いです。
「
Exception in thread "main" java.lang.UnsatisfiedLinkError: net.dixq.dxjava.libs.DxJava.DxLibInit()I
at net.dixq.dxjava.libs.DxJava.DxLibInit(Native Method)
at net.dixq.dxjava.libs.Main.main(Main.java:8)
」
が出る時は、パッケージ名とdllの関数名が一致していない可能性が高いです。
Portions of this page are modifications
based on work created and shared by Google and used according to terms
described in the Creative Commons 3.0 Attribution License.
- Remical Soft -