SWIG:将枚举包装为 C#
SWIG: wrap enum to c#
我无法使用SWIG将c ++枚举成员包装为C#。c++ 枚举成员的大小超过 Int32。在 C# 中,枚举成员的默认类型是 Int32,因此我有编译错误。虽然我按照说明进行操作,但我无法解决问题。
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# 包装器中获得了跟随成员,这会导致编译错误cannot implicitly convert type 'uint' to 'int'
我的班级.cs
public enum BigNumbers {
big = 0x80000000,
bigger
}
和全局 uint 枚举在单独的文件中:
大数字.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"
相关文章:
- 不带大括号的枚举形式
- 枚举环境变量的惯用C++14/C++17方法
- 类似枚举的计算常量
- 如何正确实现和访问运算符的各种自定义枚举器
- 错误:从"int"到枚举c++的转换无效
- C++中构造函数中的枚举
- 访问在 C++ 结构中声明的枚举变量
- 通过包装器从 C 访问C++ API 时,如何访问枚举类型
- C++:将枚举包装在类中
- 相同的枚举项在 SWIG > 2.0.1 中包装在不同类型的常量中
- 如何为返回枚举元组的 C++ 函数编写 cython 包装器?
- SWIG:将枚举包装为 C#
- 有没有一种方法可以在基于枚举的可变参数模板函数之间进行选择,这比将函数包装在结构中更简单
- 为什么在结构中包装单个枚举
- 将C++命名空间枚举包装到C接口
- 在Selene中包装一个枚举,以便在Lua中访问
- 来自c++的c包装器,带名称空间的枚举
- 如何在SWIG Java目标中包装对枚举的所有引用
- 用Cython包装枚举类
- 将枚举类型ref从c#传递到c++/将CLI包装器传递到c++