当我想用Swig %extend扩展一个给定的类时,Swig的问题
Issues with Swig when I want to extend a given class with Swig %extend
在我的Swig文件(I)中有以下代码:
%extend vgSofa::handler::VertexShape
{
vgd::Shp< vgSofa::handler::VertexShape > createVSWithNode( sofa::simulation::Node * root )
{
vgd::Shp< vgSofa::handler::VertexShape > result( new vgSofa::handler::VertexShape() );
return result->init(root) ? result : vgd::Shp< vgSofa::handler::VertexShape >();
}
vgd::Shp< vgSofa::handler::VertexShape > createVSWithBsicHandler( vgd::Shp<vgSofa::handler::BasicHandler> h )
{
return vgSofa_handler_VertexShape_createVSWithNode( $self, h->getRoot() );
}
};
在.cpp文件中创建, swig在我的方法中添加了另一个参数:
SWIGINTERN vgd::Shp< vgSofa::handler::VertexShape > vgSofa_handler_VertexShape_createVSWithBsicHandler(vgSofa::handler::VertexShape *self,vgd::Shp< vgSofa::handler::BasicHandler > h)
{...}
如何防止向VertexShape添加此附加参数?
这是正常的行为。SWIG的%extend
指令在生成的代码中生成独立的函数。如果在函数体中使用$self
,则为该函数提供一个参数(名为"self"),该参数是指向c++类实例的指针。
作为旁注:c++在底层做同样的事情。this
指针隐式地作为第一个参数传递给所有非静态成员函数。
相关文章:
- 如何使用 swig 修改类构造函数以保留对其中一个构造函数参数的引用?
- 如何制作一个满足SWIG中接口的python类
- SWIG:传递一个 std::vector< std::vector <double> >指向 python 的指针
- swig c to python:抛出一个中止的实例后终止
- 是否有一个示例如何使用SWIG生成GO Build的C Buidings
- 使用SWIG包装C 类,该类调用另一个对象成员函数
- Java和SWIG:类集成到一个包中
- 有没有一个很好的通用方法来用ruby包装swig生成的类
- 您将如何为 std::list<std::string> 创建一个类型映射,以在<String> List in C++ 中为 Java 在 SWIG 中创建?
- SWIG-为具有四个参数的函数创建一个类型映射,该参数传递一个字节数组
- 为 numpy 创建一个简单的 SWIG 类型图
- SWIG:从另一个模块返回对象的函数
- 使用 swig 使 C++ 类看起来像一个 numpy 数组
- 用swig包装一个大图书馆
- 使用SWIG和Python/C API来包装一个函数,该函数采用C++类实例的Python列表
- SWIG:Lua-传递一个c++实例作为Lua函数参数
- 使用SWIG封装c++类以在Lua中使用它-需要一个简单的例子
- 如何使用SWIG公开一个公共的内联c++方法
- 用SWIG包裹一个4维标准::向量 std::complex。<float>
- 在Java中使用SWIG,我如何有选择地SWIG一个巨大的C/ c++头文件的某些部分