ホームへ戻る

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 -