我想使用JNA将包含xml文件内容的String传递给本机函数。但不知怎的,它给了我一些问题。程序进入无限循环并且不会终止。当我尝试通过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函数。
提前致谢。