嘿伙计们,我正在尝试调用一个非托管DLL,它接受所有char*变量,其中两个充当"返回"值.in1-8是输入,in9和10是长度为512的char*,并且是空的.调用完成后,应填充结果数据.
这是我正在尝试使用的示例定义:
[DllImport("mydll.dll")]
public static extern IntPtr foo(
IntPtr in1,
IntPtr in2,
IntPtr in3,
IntPtr in4,
IntPtr in5,
IntPtr in6,
IntPtr in7,
IntPtr in8,
ref IntPtr result1,
ref IntPtr result2);
Run Code Online (Sandbox Code Playgroud)
这是我的电话:
IntPtr param1 = Marshal.StringToHGlobalUni("testdata");
IntPtr param2 = Marshal.StringToHGlobalUni("testdata");
IntPtr param3 = Marshal.StringToHGlobalUni("testdata");
IntPtr param4 = Marshal.StringToHGlobalUni("testdata");
IntPtr param5 = Marshal.StringToHGlobalUni("testdata");
IntPtr param6 = Marshal.StringToHGlobalUni("testdata");
IntPtr param7 = Marshal.StringToHGlobalUni("testdata");
IntPtr param8 = Marshal.StringToHGlobalUni("testdata");
IntPtr param9 = IntPtr.Zero;
IntPtr param10 = IntPtr.Zero;
foo(param1, param2, param3, param4, param5, param6, param7, …Run Code Online (Sandbox Code Playgroud)