c# - 在 C# 中重用 C 中的结构

标签 c# c dll struct marshalling

是否可以从 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;
    }

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

谢谢

最佳答案

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

#ifdef CLIEXPORT
#define value
#endif

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

关于c# - 在 C# 中重用 C 中的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11718017/

相关文章:

c# - 我可以配置 ServiceStack.Text 以将枚举值序列化为驼峰命名法吗?

c# - 在 Xamarin Forms 中等待 MessagingCenter

c# - Linq to SQL 奇怪的 SQL 翻译

asp.net - asp.net 网站项目中的网站二进制文件?

c++ - 在 C++ dll 中删除指针时出错

Python 将 DLL 复制到 Windows 上的站点包

c# - LINQ to XML 和 LINQ to Objects 语法

c - 头文件中的方法

C:关于 Beej 的网络指南的问题......这里有一个假设吗?

c - 在取消引用 void 指针后转换为 int 是否正确?