2010-11-30 10 views
2

Javaから使いたいライブラリがあります。Pascalライブラリ関数のセットのJava JNIラッパーを作成するにはどうすればよいですか?

ライブラリ自体はパスカルで記述され、DLLにコンパイルされます。私はすべての関連するソースコード(それはフリーでオープンソースです)へのアクセス権を持っていますが、私はライブラリの元のコードに変更提案に影響を与える可能性は低いです。私はパスカルの知識や経験はほとんどありません。ライブラリ自体は、メモリ内で構造体を渡したり返すことで、ある程度まで処理されます。 (C言語の場合、関数は構造体ポインタを受け取って返しますが、残念ながらPascalの同等の名前は認識していません)

私が作成したいのは、このライブラリのJavaラッパーです。私はこれらの関数を呼び出すことができるようにしたいと思います。私は、Java Native Interfaceに関するチュートリアルをいくつか読みました。いくつかの意味があるのは、これらの機能をどのようにインターフェースするかです。私にとって意味をなさないのは、私がこれらの構造をどのように記憶に残すかということです。

誰かがこれを行う方法を理解するのに役立つか、それとも良いリソースに向けて私を指摘することができたら本当に感謝します。私が今までに読んだことは、私が必要としているものの中で最も重要な部分であると思われるものを除いて、私が記憶しているこれらの構造に対処することをほとんど除外したり、

ありがとうございます。

+0

明確にするために、私はこの構造体からデータを読み込み、それを他の関数呼び出しに戻したいと考えています。 – Ming

+0

どのPascalコンパイラがDLLの生成に使用されていますか?私はこれまで、CからDelphiでコンパイルされたDLLとDelphiからCでコンパイルされたDLLを呼び出しましたが、これはかなり簡単です。ほとんどの場合、PascalのレコードはCの構造体とほとんど同じですが、正しい型を選択する限り、各フィールドのバイト数が一致する必要があります。そこに多くの品種があるので、文字列はもっと面白いことができます... –

+1

私はあなたがDLL関数を呼び出すことができ、構造を渡すことができるかどうかを確認するためにCでいくつかのテストコードを書くことをお勧めします。それが終わると、Cの署名がJNIコールの作業を開始します。 –

答えて

1

私の経験に基づいて、私はJNI(複雑すぎる方法)を避けるでしょう&代わりにJNAを使用してください。

+0

合意。 http://en.wikipedia.org/wiki/Java_Native_Access –

関連する問題