【发布时间】: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