我无法使用SWIG将c ++枚举成员包装到C#中。 c ++枚举成员的大小超过Int32。在C#默认类型的enum memeber是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#wrapper中得到了跟随成员,导致编译错误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.cs
作为MyClass的成员来获取它。
拜托,有人帮助我!
答案 0 :(得分:2)
<强> MyClass.i 强>
%module cpp
%{
#include "MyClass.h"
%}
%typemap(csbase) somens::MyClass::BigNumbers "uint"
%include "MyClass.h"