使用其他库中的值枚举
Swig enum using values from other library
我想使用swig为我的C 类生成C#包装器。我面临以下问题:
我已经定义了使用第三方(封闭源)库中值的枚举。值在header_from_3rd_party_lib.h中声明为
#define 3RD_PARTY_LIB_CONST_VALUE_1 -4
#define 3RD_PARTY_LIB_CONST_VALUE_1 -10
我的标头文件看起来像:
#include "HEADER_FROM_3RD_PARTY_LIB.h"
namespace Foo
{
namespace Bar
{
class MyClass
{
public:
enum MyEnum
{
Enum1 = 3RD_PARTY_LIB_CONST_VALUE_1,
Enum2 = 3RD_PARTY_LIB_CONST_VALUE_2
};
}
}
}
我正在使用以下SWIG代码:
%module cpp
%{
#include "MyClass.h"
%}
%include <windows.i>
%include "MyClass.h"
包装器已成功生成,但生成的CSHARP文件具有以下枚举:
public enum MyEnum
{
Enum1 = 3RD_PARTY_LIB_CONST_VALUE_1,
Enum2 = 3RD_PARTY_LIB_CONST_VALUE_2
}
显然这会生成错误
有什么想法可以解决?我看了一个swig示例,但找不到类似的东西。
我到目前为止发现的唯一解决方案是包括
#include "HEADER_FROM_3RD_PARTY_LIB.h"
在swig文件中或再次在swig文件中重新定义值
#define 3RD_PARTY_LIB_CONST_VALUE_1 -4
#define 3RD_PARTY_LIB_CONST_VALUE_1 -10
还有其他建议如何改善?第一种方法的问题是,通过包含整个标头文件,我会得到很多我不需要的自动生成的文件。
相关文章:
- 不带大括号的枚举形式
- 泛型枚举和其他类型的重载模板函数
- 如何使枚举被其他类识别
- const枚举或其他
- C++ 在方程中使用变量;错误:表达式必须具有整数或无作用域枚举类型及其他
- 其他类中的枚举类的二传手和获取器
- 如何根据枚举参数返回其他类型
- 无法使用其他文件中的枚举:" does not name a type"错误
- 使用对其他枚举值的操作定义枚举元素值
- 设计问题:枚举或函数或其他什么
- 使用其他库中的值枚举
- 将结构的枚举传递给其他功能并分配值
- 如何使C枚举类型可用于其他语言
- 在编译时获取枚举类大小,而无需定义其他元素
- 如何访问其他类的成员枚举 (c++)
- 在其他类中使用头中的枚举
- 可以根据同一枚举类型中的其他枚举器来定义枚举器吗
- 访问其他类的枚举值
- 使枚举值与许多其他枚举值相等
- 由其他枚举数生成的枚举数值