我在一个小的C#函数中使用Unamanged依赖项(RGiesecke.DllExport.DllExport)和jna,它应该返回另一个现在java函数中消耗的字符串。
按照jna的映射建议,我制作了以下代码:
我的C#代码:
[RGiesecke.DllExport.DllExport]
public static unsafe char* Test(string id)
{
unsafe
{
fixed (char *s = "test passed")
{
return s;
}
}
}
Java方面:
public interface ITest extends Library{
public String Test(String id);
}
public static void main(String[] args) {
ITest nativeExample= (ITest)Native.loadLibrary("C:/native/JavaLib.dll", ITest.class);
String s = nativeExample.Test("id");
System.out.println(s);
}
所以,打印的所有内容都是' t ',因为我打赌所有正在传输的是s [0]的地址。 有没有人有幸通过jna将字符串从C#映射到java?
C#代码中的普通字符串会引发错误。
答案 0 :(得分:0)
您是否尝试过返回字符串而不是char?或将char * s更改为char s []