C# 使用其他库中的值进行Swig枚举 我想使用SWIG为C++类生成C语言包装器。我面临以下问题:
我定义了一个枚举,它使用来自第三方(封闭源代码)库的值。 这些值在来自第三方库的头库中声明为C# 使用其他库中的值进行Swig枚举 我想使用SWIG为C++类生成C语言包装器。我面临以下问题:,c#,c++,enums,wrapper,swig,C#,C++,Enums,Wrapper,Swig,我定义了一个枚举,它使用来自第三方(封闭源代码)库的值。 这些值在来自第三方库的头库中声明为 #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 {
#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"
显然,这会产生一个错误,因为C#无法找到第三方_LIB_CONST_值_1和第三方_LIB_CONST_值_2
谁能解决这个问题?我查看了Swig示例,但找不到类似的内容。到目前为止,我找到的唯一解决方案是要么包括
#include "HEADER_FROM_3RD_PARTY_LIB.h"
或在swig文件中重新定义值
#define 3RD_PARTY_LIB_CONST_VALUE_1 -4
#define 3RD_PARTY_LIB_CONST_VALUE_1 -10
还有什么其他建议可以改进吗?第一种方法的问题是,通过包含整个头文件,我得到了许多我不需要的自动生成的文件。这很奇怪。您是否尝试过构建MyClass.cpp,它构建得很好?第三方自由常数是另一个枚举、定义、静态常数还是什么?请更新您的问题,不要发表评论。感谢您的关注。我已经更新了我的问题并提供了一个临时解决方案,但我对结果不满意。我同意,但是+1用于找到解决方案并发布它。
#define 3RD_PARTY_LIB_CONST_VALUE_1 -4
#define 3RD_PARTY_LIB_CONST_VALUE_1 -10