我想使用 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 函数。
提前致谢。