我想从java调用vb.net ByRef和String函数。
vb.net dll由UnmanagedExports制作。
xmlns:app|xmlns:local="http://schemas.android.com/apk/lib/com.app.chasebank"
我需要你的帮助。
答案 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;
}