关于在C#中使用一个C++中的结构问题,谢谢
在C++代码中有以下结构:
typedef struct {
char Info[256];
BOOL bIsPCICard;
DWORD Addr;
DWORD Flags;
} MPX_DEV_INFO;
函数调用为:XXX(MPX_DEV_INFO *info)
我在C#中定义如下 :
public struct MPX_DEV_INFO
{
public char[] Info;
public bool bIsPCICard;
public long Addr;
public long Flags;
}
MPX_DEV_INFO pInfo=new MPX_DEV_INFO();
pInfo.info=new char[256];
调用XXX(ref pInfo);
但执行到此处出现错误:无法封送类型pinfo.....
这是怎么回事,定义应该是正确的,原来也使用api中的结构和引用,都没有问题。
谢谢
问题点数:20、回复次数:4Top
1 楼bluexingqing(蓝色)回复于 2005-08-02 11:53:08 得分 0
upTop
2 楼Jim3(Jim)回复于 2005-08-02 13:10:58 得分 20
[StructLayout(LayoutKind.Sequential)]
public struct MPX_DEV_INFO
{
[MarshalAs(UnmanagedType.ByValArray ,SizeConst=256)]
public char[] Info;
public bool bIsPCICard;
public long Addr;
public long Flags;
}Top
3 楼bluexingqing(蓝色)回复于 2005-08-02 13:50:24 得分 0
[StructLayout(LayoutKind.Sequential)]
表示什么意思?Top
4 楼Jim3(Jim)回复于 2005-08-02 13:57:35 得分 0
表示结构在内存中的存储方式,看msdn的帮助
Top




