[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互助会ホームページ)