jna:将一个字符串从C#传递给Java

时间:2014-03-20 23:05:28

标签: jna

我在一个小的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#代码中的普通字符串会引发错误。

1 个答案:

答案 0 :(得分:0)

您是否尝试过返回字符串而不是char?或将char * s更改为char s []