SWIG:将枚举包装到 C#

SWIG: wrap enum to c#

我无法使用 SWIG 将 C++ 枚举成员包装到 C#。 C++ 枚举成员的大小超过了 Int32。在 C# 中,枚举成员的默认类型是 Int32,因此出现编译错误。虽然我按照instructions,但还是解决不了问题

MyClass.h

class  MyClass
{
public:
    MyClass() {}
    ~MyClass() {}
    enum  BigNumbers
    {
        big = 0x80000000, bigger
    };
};

MyClass.i

%module cpp

%{
    #include "MyClass.h"
%}
%include "MyClass.h"

%typemap(csbase) BigNumbers "uint"
%inline %{
  enum BigNumbers { big=0x80000000, bigger };
%}

结果我在生成的 c# 包装器中得到 follow 成员,这导致编译错误 cannot implicitly convert type 'uint' to 'int'

MyClass.cs

  public enum BigNumbers {
    big = 0x80000000,
    bigger
  } 

和单独文件中的全局 uint 枚举:

BigNumbers.cs

public enum BigNumbers : uint {
  big = 0x80000000,
  bigger
}

虽然我想作为 MyClass 的成员在 MyClass.cs 中获取它。

拜托,任何人都可以帮助我!

抱歉问了一个愚蠢的问题,我应该更好地阅读手册。
正确的接口文件内容如下:

MyClass.i

%module cpp

%{
    #include "MyClass.h"

%}
%typemap(csbase) somens::MyClass::BigNumbers "uint"
%include "MyClass.h"