小编ayj*_*jis的帖子

如何从C#传递和接收数据到非托管C++ DLL

  • 我没有完全访问DLL源,只有标题.
  • 我实际代码中的参数名称更具描述性

嘿伙计们,我正在尝试调用一个非托管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)

.net c# unmanaged marshalling dllimport

3
推荐指数
1
解决办法
4629
查看次数

标签 统计

.net ×1

c# ×1

dllimport ×1

marshalling ×1

unmanaged ×1