如何调用JNA到VB.net ByRef字符串函数

时间:2017-01-24 14:10:34

标签: java vb.net jna

我想从java调用vb.net ByRef和String函数。

vb.net dll由UnmanagedExports制作。

xmlns:app|xmlns:local="http://schemas.android.com/apk/lib/com.app.chasebank"

我需要你的帮助。

1 个答案:

答案 0 :(得分:0)

我在3F的帮助下解决了它。

jna mapping

public interface CAPI extends Library
{
    public int getStringArgs(LongByReference ptr); // see also Pointer etc.
}

的java

CAPI l = Native.loadLibrary("DllExportAndJNA", CAPI.class);
...
LongByReference ptr = new LongByReference();
l.getStringArgs(ptr);
(new Pointer(ptr.getValue())).getString(0); // Hello from .NET

vb.net代码

[DllExport]
public static int getStringArgs(ref IntPtr ptr)
{
    ptr = Marshal.StringToCoTaskMemAnsi("Hello from .NET")
    return 0;
}

[DllExport]
public static void freeString(ref IntPtr ptr)
{
    Marshal.ZeroFreeCoTaskMemAnsi(ptr)
    return;
}

https://github.com/3F/DllExport/issues/25