Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用其他库中的值进行Swig枚举 我想使用SWIG为C++类生成C语言包装器。我面临以下问题:_C#_C++_Enums_Wrapper_Swig - Fatal编程技术网

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