Pregunta

I am using Unamanged dependencies (RGiesecke.DllExport.DllExport) and jna in a small C# function that should return a string consumed within another now java function.

Following the jna suggestions for mapping i crafted the code below:

My C# code:

[RGiesecke.DllExport.DllExport]
public static unsafe char* Test(string id)
{
  unsafe
  {
      fixed (char *s = "test passed")
          {
              return s;
           }
       }    
 }

Java side:

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);
 }

So, all that is printed, is 't', because I bet all is being transmitted is the address to s[0]. Has anyone had luck mapping strings from C# to java through jna?

Plain strings in the C# code throws errors.

¿Fue útil?

Solución

Have you tried returning a string instead of char? or changing char *s to char s[]

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top