c# - 在 C# 中编码(marshal) C 数组

标签 c# .net c dll marshalling

<分区>

Possible Duplicate:
Marshaling c structures in c#

实际的 C 结构:

typedef struct procedure
{
  char code[8];
}procedure;

typedef struct p45_cldxed24
{
  procedure p45_cldxed[8];
}p45_cldxed24;

p45_cldxed24 的等效 C# 结构是什么?具体来说,您将如何编码数组?

check this out once

这是正确的吗?

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
struct p45_cldxed24
{
    [MarshalAsAttribute(UnmanagedType.LPArray, ArraySubType=UnmanagedType.Struct,SizeConst = 8,SizeParamIndex=0)]
    procedure[] p45_cldxed;
}

最佳答案

我相信代码如下:

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
struct p45_cldxed24
{
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
    procedure[] p45_cldxed;
}

这里的关键是 MarshalAs 属性。

关于c# - 在 C# 中编码(marshal) C 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9189254/

相关文章:

c# - Parallel.ForEach 缺少的项目

c# - .NET 中的 PDF 二进制数据输出

c# - 在 VS 中从 C# 调用 C++ DLL 失败。在 VS 外运行 exe,它可以工作

c# - 阻止滚动条的值更改事件处理程序,直到该条被释放

c - c中如何存储整数和字符

c - STM32f207ZG NUCLEO 板,ld.exe : section . RxDescripSection VMA [2000e000,2000e09f] 与 .bss VMA 部分重叠 [20000118,2001431b]

c# - 从列表中选择一个对象

c# - 列出 FTP 目录中的前 N ​​个文件

c# - 将项目动态添加到 WPF 组合框,然后在某些事件上重置值

c - 在 glibc 源代码中哪里可以找到 select() 源代码?