但很多 dll 的参数不会是简单的基础类型,而是结构体 struct 。因此就需要在 C# 端定义同样的结构体类型,才能实现调用 C 类型 dll。这里例举几种不同的结构体情况,以及其对应的解决方案。基础调用方式对于一个结构体类型:在 C# 端就需要定义为包含字符数组对于一个包含字符数组的结构体类型:在 C# 端就需要使用 Marshal 设置数据空间大小,同时最好定义一个初始化函数与 get 的定义包含字符二维数组对于一个包含字符二维数组的结构体类型:在 C# 端同样需要使用 Marshal 设置数据空间大小,需要将两个 Size 相乘,并定义一个初始化函数。那么我们就可以将其再包装一层,转换为 C 类型 dll。C# 那边就这样导入至于 C 类型 dll 中其他类型变量在 C# 的对应,则可以参考 Microsoft 的 总结

C#调用C类型dll入参为struct的问题详解

C#调用C类型dll入参为struct的问题详解

C#调用C类型dll入参为struct的问题详解

C#调用C类型dll入参为struct的问题详解

C#调用C类型dll入参为struct的问题详解