3

是否可以从 C dll 导入 C# 结构定义?

在我看到的所有示例中,都是重新定义 C# 中的结构。如果结构发生变化怎么办?我需要在我的项目中的两个位置进行更改...

struct MyCStruct
{
    unsigned long A;
    unsigned long B;
    unsigned long C;
};

在 C# 中:

    [StructLayout(LayoutKind.Sequential)]
    internal struct MyCStructAgain
    {
        public uint A;
        public uint B;
        public uint C;
    }

如果无法重用定义,那是为什么呢?

谢谢

4

1 回答 1

2

您可以将结构编译为 C++/CLI,其中编译器会为您生成托管对应项,然后您可以引用它们。您需要一个 ifdef 来添加值以使其成为 .NET 结构。

#ifdef CLIEXPORT
#define value
#endif

CLIEXPORT struct MyCStruct
{
    unsigned long A;
    unsigned long B;
    unsigned long C;
};
于 2012-07-30T09:51:40.177 回答