我无法使用 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 成员,这导致编译错误无法将类型“uint”隐式转换为“int”
MyClass.cs
public enum BigNumbers {
big = 0x80000000,
bigger
}
和全局 uint 枚举在单独的文件中:
BigNumbers.cs
public enum BigNumbers : uint {
big = 0x80000000,
bigger
}
虽然我想将它作为 MyClass 的成员获取到 MyClass.cs
中。
请大家帮帮我!
最佳答案
抱歉,这个问题真的很愚蠢,我应该更好地阅读手册。
接口(interface)文件正确内容如下:
MyClass.i
%module cpp
%{
#include "MyClass.h"
%}
%typemap(csbase) somens::MyClass::BigNumbers "uint"
%include "MyClass.h"
关于c# - SWIG:将枚举包装到 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44848300/