c# - 结构 - System.Runtime.Interoptservice C++ 与 C#

标签 c# c++ dll struct

我在 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;
}

注释变量 nNodeppNode,一切正常。取消注释此变量,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/

相关文章:

c# - 如何从 C# 调用带有结构指针参数的 C++ 函数?

Windows 7 中的 C# dll 问题

c# - 在 C# 中旋转图像的矩阵乘法

c# - 访问基类变量不可访问错误

c++ - 选择正确的内核大小以进行中值模糊处理以减少噪声

c++ - 编译器误区

c++ - 使用 C++ 互操作在 Haskell 中构建简单的 DSL

java - 带有 ADO(连接和查询)的 DLL (Delphi) 在 Java 中不起作用(使用 jna)

c# - 使用安装在 ASP.NET MVC 4 应用程序中的 Elmah 进行异常处理

c# - 所有文本转语音安装的语音均未显示