我正在学习为 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# 脚本中?
谢谢,
爸爸
实际上在我的例子中,我想使用的类型是一个不透明的指针。因此,我实际上不需要(不想)将我的结构的内部结构暴露给 C# 脚本。在那种情况下,解决方案是在我的 dllImport extern 声明中简单地编写 IntPtr 而不是 myStruct_handle_t 并且它有效。
对于枚举,我只是在我的 C# 脚本中将它们重新定义为 public enum myEnum_t : int {/* .. enums, */}
我是一名优秀的程序员,十分优秀!