JNAを使用してxmlファイルの内容を含む文字列をネイティブ関数に渡したいのですが、どういうわけか問題が発生しています。プログラムは無限ループに入り、終了しません。Cを介してDLLにアクセスしようとしているときにも同じことが機能しています。
これは私のコードがどのように見えるかです -
Native side --
Class ABC{
...
long t = processValues(const * str1 ,char** output);
...}
JNA interface looks llke this -
public interface Add extends Library
{
Add INSTANCE = (Add) Native.loadLibrary("add", Add.class);
...
NativeLong processValues(String str1,PointerByReference output);
...}
main method in java class is as follows -
public static void main(String args[]){
Add lib = Add.INSTANCE;
PointerByReference ptrRef = new PointerByReference();
String strBuffer = "<?xml version= \"1.0\" ?><NRECORD> <SUBRECORD><ITEM1> <NAME> pqr</NAME> <MDATE>10/12/2012</MDATE><ENGINEER>TMAY</ENGINEER></ITEM1></SUBRECORD></NRECORD> "
Nativelong p = lib.processValues(strBuffer,ptrRef);
}
プログラムは無限ループに入り、決して終了しません。DLL は再帰関数を使用して入力 xml 文字列を解析します。ここに問題があると思います。(私はサードパーティのdllを使用しているため、コードにアクセスできません。)しかし、Cを介して同じdllにアクセスすると(同じ入力パラメーターを使用して)関数processValues()が正常に実行されます。私の質問は
これは、xml コンテンツを文字列として渡す正しい方法ですか? dll 関数がどのように呼び出されているか、イベント ログを取得する方法はありますか。
前もって感謝します。