C#传递结构体地址(或者结构体成员的地址)给C/C++ DLL

本文介绍了如何在C#中使用DllImport调用C/C++ DLL,并将结构体的地址或者结构体成员的地址传递给DLL方法。通过创建一个结构体,初始化其成员,然后使用Marshal.AllocHGlobal分配内存并用StructureToPtr复制结构体到不受管理的内存,最后将结构体的指针传递给DLL函数。示例中展示了如何传递Point结构体的地址。
摘要由CSDN通过智能技术生成

C#传递结构体地址(或者结构体成员的地址)给C/C++ DLL方法:

using System;
using System.Runtime.InteropServices;
public struct Point
{
  public int x;
  public int y;
}
class Example
{
  static void Main()
  {
  // Create a point struct.
  Point p;
  p.x = 1;
  p.y = 1;
  Console.WriteLine("The value of first point is " + p.x + " and " + p.y + ".");
  // Initialize unmanged memory to hold the struct.
  IntPtr pnt = Marshal.AllocHGlobal(Marshal.SizeOf(p));
  try
  {
  // Copy the struct to unmanaged memory.
  Marshal.StructureToPtr(p, pnt, false);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值