0

我想使用 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 函数。

提前致谢。

4

0 回答 0