【发布时间】:2019-08-18 15:27:00
【问题描述】:
我在 c++ 中编译了一个 dll,其中包含一个需要在 c++ 项目和 c# 项目中使用的枚举。使用 c++ 项目没有问题,但在 c# 中弹出 DllImport 只能用于方法
我已经考虑过解决这个问题的函数,但结果一团糟。我只需要从 c# 访问 c++ 枚举
这是 dll 中的 c++ 枚举:
enum DLL_PUBLIC ByteCode
{
// Stuffs...
};
这就是我尝试在 c# 中导入它的方式:
[DllImport("ByteCodes.dll", CallingConvention = CallingConvention.Cdecl)]
enum ByteCodes;
我知道DllImport 只能用于方法,但我需要它用于枚举。我能做什么?
【问题讨论】:
-
C++ 和 C# 并不总是易于互操作。它们是完全不同的语言,有着完全不同的做事方式——而且没有标准化的 ABI。
-
@JesperJuhl 所以我应该为 c# 创建第二个 DLL 并在每次编辑枚举时复制粘贴代码?这不是所有的工作,只是有点乱,但如果这是唯一的方法......
-
@Bonfra04 您不必重写 C# 中的所有代码,只需枚举声明(请参阅我的答案)。
-
DllExport 用于函数,而不是值,因此不需要在枚举上导出。