![](/img/trans.png)
[英]What is the easiest way to convert a compressed wav file to an uncompressed wav file in C# or C++?
[英]what is the easiest way to a convert a c++ struct to c#?
这只是一个例子
我有一个这样的C ++结构:
typedef struct _cdm_status {
BYTE error_cd;
BYTE sensor[9];
} SDMSTATUS, *LPSDMSTATUS;
C#等效项是什么?
在该示例中如何使用它?
[DllImport("MFSSDM.dll")]
public static extern bool MFSCommSDM_Status(LPSDMSTATUS lpStatus);
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public unsafe struct _cdm_status {
public Byte error_cd;
public fixed Byte sensor[9];
}
public class _cdm_status
{
public byte error_cd;
public byte[] sensor = new byte[9];
}
C#没有typedef,因此您不必使用实际的类型名称“ _cdm_status”来代替将类型称为“ SDMSTATUS”。
似乎您正在尝试转换结构,以便可以使用p / invoke将其传递给本机函数。 我会这样做:
public struct SDMSTATUS
{
public byte error_cd;
[MarshalAs(UnmanagedType.ByValArray, SizeConst=9)]
public byte sensor[];
}
然后,要声明该函数,必须确保传递了指向该结构的指针。 因此,像这样声明p / invoke:
[DllImport("MFSSDM.dll", CallingConvention=CallingConvention.Cdecl)]
public static extern bool MFSCommSDM_Status(ref SDMSTATUS Status);
我假设调用约定为cdecl
,但是您需要替换为真值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.