当前位置:编程学习 > JAVA >>

java调用delphi dll的 [out param: WideString]参数问题

最近需要调用delphi的dll,定义为:
function xxxx(const sParam: WideString; out sResult: WideString;): Integer;  stdcall;

使用JNative调用现在就是两个问题:
1、参数sParam:使用obj.setParameter(0, Type.STRING,"test");值传入dll后就不是test了。
2、参数sResult就完全不知道怎么写了,感觉只能写Pointer了,写上也不知道怎么获取结果。

考虑到C#有out方式就用C#试了下,发现这样可以调成功。
[DllImport("xxxx.dll", EntryPoint = "xxxx", CharSet = CharSet.Unicode)]
static extern int xxxx(byte[] sParam, out string sResult);

//sParam这里用string dll中只能得到一半
Console.WriteLine(xxxx(new UnicodeEncoding(false, false).GetBytes("test"), out sResult));
Console.WriteLine(sResult);


有没有人弄过这种类型的dll呀,不管用JNative还是其他方式都行,有人指点下没。



  --------------------编程问答-------------------- 没用过jnative,以前做过这种类似的,但是是自己用c封装jni调用的。 --------------------编程问答--------------------
引用 1 楼 rumlee 的回复:
没用过jnative,以前做过这种类似的,但是是自己用c封装jni调用的。

jni方式那java中的定义代码如何写呢?
public static native void xxxx(?,?); --------------------编程问答-------------------- 参考:https://github.com/twall/jna/blob/master/www/Mappings.md --------------------编程问答--------------------
引用 3 楼 huxiweng 的回复:
参考:https://github.com/twall/jna/blob/master/www/Mappings.md

这个只是类型对应呀,光这还不行呢。关键的out参数java中没的对应的东西呀。 --------------------编程问答-------------------- 人工置顶。。。
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,