[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] Re: 外部DLLを呼びたい(Win32)
>お世話になっております。
こちらこそ。先週はお邪魔いたしました。
>> 昨年に作成されたVBで作成されたDLLなのですが、
>> Javaで作成したアプリケーション(Servlet)から呼び出すことになりました。
>
>(ちょっと日本語が壊れてる...)
>JDKのバージョンは、 Ver 1.1.6(7)を考えています。
>#WebSphere2.0のサポート状況に影響されています。
Java からの Win32 DLL 呼び出しは、JNI という仕組みを使います。
(1)
まず Java 側で native というキーワードを付けたメソッドを定義します。
public native void setXXX(String xxx);
public native String getXXX();
このメソッドは Win32 の場合は DLL 内の関数です。(exportされている関数)
この Java クラスをjavacでコンパイルし、
javah -jni <クラス名> で C/C++ ヘッダーファイルを出力させます。
(2)
このヘッダーファイルを C/C++ ソースで #include して、
DLL を書きます。
この DLL から、さらに既存の DLL を呼び出します。
つまり、Java と DLL の間をつなぐ DLL (JNI対応のDLL) を
作ることになります。
既存の DLL が VB で作ったものの場合はやったことがないのですが、
LoadLibrary 関数を使って動的にロードすれば出来そうな気がします。
JNI については JDK のドキュメントに簡単な概要があります。
書籍としては次のものが参考になります。
「JNI:Java Native Interfaceプログラミング」
http://www.mmjp.or.jp/prentice/washo/inet/wa_int47-j.html
> C/C++コードを用いたJavaアプリケーション開発
> ロブ・ゴードン 著、林 秀幸 訳
>
>1998年10月発行/487ページ/B5変形/本体価格: 4,500円+税
>
>【出版元】プレンティスホール出版 ISBNコード:4-89471-080-3
--
えんどう やすゆき <yasuyuki@xxxxxxxxxx>
http://www.javaopen.org/jfriends/ (Java互助会ホームページ)