gpt4 book ai didi

c# - 如何从 unity C# 访问自定义 C 类型定义、枚举?

转载 作者:太空宇宙 更新时间:2023-11-04 04:44:03 26 4
gpt4 key购买 nike

我正在学习为 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, */}

关于c# - 如何从 unity C# 访问自定义 C 类型定义、枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22924815/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com