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"
我无法使用 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"