2012-03-22 3 views
0

私はいくつかのネイティブdllカーネルに関数(コールバック)へのポインタを送るJavaアプリケーションを持っています。 ネイティブコードで操作するためにxfunctionライブラリを使用します。コールバック本体内の整数の配列としてint * pointerを処理する必要があります。実際、私はcom.excelsior.xFunction.Pointerオブジェクトを持っています。私は、com.excelsior.xFunction.Pointer => int []配列を変換するためのいくつかのトリックを作る必要があります。 JNAライブラリのヘルプ(com.sun.jna.Pointer、IntByReferenceを使用)を使用できますか?xfunctionポインタをJava配列に変換するにはどうすればよいですか?

たとえば、com.excelsior.xFunction.Pointer => com.sun.jna.Pointer => int []配列です。 xfunctionへの呼び出しをなくすためにコードを書き直したくありません。

答えて

0

XFunctionは、ネイティブポインタをフェッチバックする機能を提供していないようです。それはオープンソースではなく、彼らの虚構の製品はJavaの難読化ツールなので、あなたは立ち往生していると思うし、com.excelsior.xFunction.Pointer => com.sun.jna.Pointerを実行することはできないと思う。

だから、彼らが言うように(http://www.excelsior-usa.com/xfunction.html):

我々[...]私はあなたがこの部分を再コーディングした方が良いと思うあなたはJNA

で最初に見ることをお勧めあなたのあなたがやりたい...またはとにかくXFunction

にこだわる、あなたはXFunctionのネイティブポインタをバックフェッチする方法を見つけるために管理している場合だけでJavaのlongにキャストし、JNAのnew com.sun.jna.Pointer(long)にそれを渡すとする完全なJNAでアプリn com.sun.jna.Pointer.getIntArr(offset,arrayLength)純粋なJavaで配列を取得する

関連する問題