1
Javaからvb.net ByRefとString関数を呼び出したいと思います。JNDをVB.netに呼び出す方法ByRef文字列関数
vb.net dllは、UnmanagedExportsによって作成されています。
//java
String[] str = {"testJavaWrited"};
String[] str2 = {"testJavaWrited2"};
final VbWrapper wr = (VbWrapper)Native.loadLibrary("vbtestlib", VbWrapper.class);
wr.test(str,str2);
System.out.println(str); // not printed
System.out.println(str2); // not printed
// jna mapping
public interface VbWrapper extends Library {
public int test(String[] str,String[] str2);
}
//vb.net
<DllExport("test", CallingConvention.StdCall)>
Function test(ByRef str As String, ByRef str2 As String) As Integer
MsgBox("test Called") ' printed
MsgBox(str) ' printed
str = "testStringWrited"
str2 = "testStringWrited2"
Return 0
End Function ' heap error
私はあなたの助けが必要です。
'文字列[]' 'STRING'ないことですタイプミス? –
呼び出し規約として 'cdecl'を試すこともできます。afaik JNAはcdeclを使う標準Cを想定しています。 –
Stringを使用すると文字列引数を更新できません... –