【问题标题】:Swig to java, typedef enum does not create enum type in java classSwig to java,typedef enum 不会在 java 类中创建 enum 类型
【发布时间】:2022-01-14 18:39:04
【问题描述】:

我正在处理我的第一个 swig 项目,其中包含一个非常古老的 3rd 方库。 有propper enums和声明的typedef enums的混合,swig做我期望它对enums做的事情,它将带有值的enum props转换为java,但是使用typedef enums它只将它转换为一个int。

example.h

typedef enum
{
   prop1 = data,
   prop2
} enumName;

文件.i

%module example

%include "enums.swg"
%javaconst(1);

%{
#include "example.h"
%}

%include "example.h

如何将枚举值添加到生成的 java 接口中?

编辑 1。

直接在接口文件中添加 typedef 枚举会正确生成带有枚举定义的 java 文件。 但这是正确的方法吗?在第三方项目更新期间,这似乎需要大量维护。

新文件.i

%module example

%include "enums.swg"
%javaconst(1);

%{
#include "example.h"
%}

typedef enum
{
   prop1 = data,
   prop2
} enumName;

%include "example.h

编辑 2: %ignore "" 和 %rename("%s) 也有效,这似乎是罪魁祸首。 在不同的文件上使用相同的方法而不忽略将创建propper包装器。

编辑 3: %ignore 确实是罪魁祸首。 和 %rename("%s") 枚举名称;不足以忽略枚举中的属性。

【问题讨论】:

    标签: java c++ enums swig typedef


    【解决方案1】:

    %ignore 确实是罪魁祸首。 和 %rename("%s") 枚举名称;不足以忽略枚举中的属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      • 2010-11-30
      • 2021-05-31
      • 1970-01-01
      相关资源
      最近更新 更多