我在 C++ 中得到了一个结构,想在 C# 中使用它。几个月以来,它运行良好。现在,我稍微更改了结构,但一切都不再起作用:
附上C++定义的结构体:
typedef struct TCell{
struct TPoint P;
struct TFace** ppFace;
struct TNode** ppNode;
double Volume;
unsigned int nFace;
unsigned int nNode;
unsigned long Index;
unsigned long Index2;
struct TFamily* pFamily;
}TCell;
在 C# 中附加结构:
[StructLayout(LayoutKind.Sequential)]
public struct TCell
{
public TPoint P;
public TFace** ppFace;
public TNode** ppNode;
public double Volume;
public UInt16 nFace;
public UInt16 nNode;
public UInt32 Index;
public UInt32 Index2;
public TFamily* pFamily;
}
注释变量 nNode
和 ppNode
,一切正常。取消注释此变量,C# 在请求 nNode
时显示 Index
的值。
在 C++ 中输出是正确的。
我使用的是 Visual Studio Express 2015。
sizeof(TCell)
在 C# 和 C++ 中返回 72
有什么想法吗?
非常感谢。
最佳答案
您在 C++ 中有 unsigned int
,但在 C# 中有 UInt16
。您可能打算使用 UInt32
。
关于c# - 结构 - System.Runtime.Interoptservice C++ 与 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34322242/