问题描述
我正在使用 SWIG 为我的 C ++ 库生成 Java 绑定。所讨论的库遵循蛇格命名约定(例如My_class::my_method
),该约定通过一组MyClass::myMethod
规则转换为Java驼峰命名约定(例如%rename
)。
class IBase_interface {
public:
virtual void ok() = 0;
virtual void not_ok() = 0;
};
/**
* Note that this is a private inheritance so swig will ignore everything
*/
class Derived : private IBase_interface {
public:
/**
* The idea is to expose only wanted methods manually here via C++03 access declarations
*/
using IBase_interface::ok;
using IBase_interface::not_ok;
};
如果我的界面文件如下所示:
%module test
%include "Test.h"
我最终得到一个正确生成的Derived.java
,其中将包含从IBase_interface
继承的两个方法
但是,如果我通过在包含之前添加以下行来向接口文件引入命名规则:
%rename("%(lctitle)s",%$isfunction) "";
生成的Derived.java
将仅包含ok
方法,而not_ok
将被跳过(因为它被重命名为驼峰大小写,因此using IBase_interface::not_ok
停止了任何作用)。
官方文档(http://www.swig.org/Doc1.3/SWIGPlus.html#SWIGPlus_nn35 @ 6.25)似乎可以解释相关问题:
解决重载中的歧义可能会阻止声明 使用
导入
有没有办法解决这个限制?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)