如何访问统一C#中的自定义C类型定义、枚举

本文关键字:自定义 类型 定义 枚举 何访问 访问 | 更新日期: 2023-09-27 17:57:29

我正在学习为Unity编写C插件。

从C#,我可以使用dllImport访问C代码中声明的函数。但现在我也想访问在其.h文件中声明的typedef枚举等。

例如,在我的C.h文件中,我有这样的东西:

typedef struct _myStruct  * myStruct_handle_t;

void          myCFunction(  myStruct_handle_t myStruct );

现在,当我尝试用dllImport在C#脚本中导入这个函数时,我得到了以下错误:

Assets/PluginImport.cs(28,49):错误CS0246:找不到类型或命名空间名称"myStruct_handle_t"。是否缺少using指令或程序集引用?

如何使用C代码中定义的类型?例如,有没有一种方法可以将我的.h文件包含在我的c#脚本中?

谢谢,

Baba

如何访问统一C#中的自定义C类型定义、枚举

实际上,在我的情况下,我想要使用的类型是一个不透明的指针。因此,我实际上不需要(希望)向c#脚本公开结构的内部。在这种情况下,解决方案是简单地在我的dllImport外部声明中写入IntPtr而不是myStruct_handle_t,它就可以工作了。

对于枚举,我刚刚在C#脚本

中将它们重新定义为公共枚举myEnum_t:int{/*.enums,*/}