2

Jythonを介して一連のDLLベースの関数をJavaに実装するためにPythonの学習に多くの時間を費やした後、Jythonのドキュメントを読むのを忘れ、ct​​ypesのサポートがないためにほとんどのコードが役に立たなくなりました。

JNIを使​​いたくなかった

PCshll32.dllから、PersonalCommunicationsからHLLAPIを使用していくつかの関数にアクセスしようとしています。

私はそれをPythonでほとんど問題なく動作させることができました。ウェブ上で、たくさんのドキュメントやレシピを見つけるのは本当に簡単でした。

今、私は偶然にJNAを発見しました、そして私はそれに多くの問題を抱えています。特に非標準のDLLにアクセスしようとしているときは、それに関する情報をほとんど見つけることができません。

私が理解していることから、インターフェイスとなるpcshll32.classを作成する必要があります-User32.dllへのインターフェイスのように見えるUser32.class(またはこれをプロキシと呼ぶ必要があります...)によく似ています。

まあ、それは私がこれを読んだ後に起こっていると思うことです。

だから...どうすれば外部DLLをインポートできますか?出来ますか?インターフェイス/プロキシを作成する必要がありますか?そこにサンプルはありますか?

4

1 に答える 1

2

あなたはこのようにそれをするべきです:

public interface PcShll32 extends StdCallLibrary { //StdCallLibrary is for Windows functions

    PcShll32 INSTANCE = (PcShll32) Native.loadLibrary(
                   "pcshll32", PcShll32.class, W32APIOptions.DEFAULT_OPTIONS); //Options are for Win32API

    // your methods
}

もちろん、この外部ライブラリをJNAに提供する必要があります。

私にとって最良の説明はソースコードです

于 2012-08-03T15:01:29.807 に答える