C++ 当我想用Swig%extend扩展给定类时,Swig出现问题
我的Swig文件(.I)中有以下代码:C++ 当我想用Swig%extend扩展给定类时,Swig出现问题,c++,python,wrapper,swig,C++,Python,Wrapper,Swig,我的Swig文件(.I)中有以下代码: %extend vgSofa::handler::VertexShape { vgd::ShpcreateVSWithNode(sofa::simulation::Node*根) { vgd::Shpresult(新的vgSofa::handler::VertexShape()); 返回结果->初始化(根)?结果:vgd::Shp(); } vgd::ShpcreateVSWithBsicHandler(vgd::Shp h) { 返
%extend vgSofa::handler::VertexShape
{
vgd::ShpcreateVSWithNode(sofa::simulation::Node*根)
{
vgd::Shpresult(新的vgSofa::handler::VertexShape());
返回结果->初始化(根)?结果:vgd::Shp();
}
vgd::ShpcreateVSWithBsicHandler(vgd::Shp h)
{
返回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)
{...}
SWIGINTERN vgd::ShpvgSofa\U handler\U VertexShape\U createVSWithBsicHandler(vgSofa::handler::VertexShape*self,vgd::Shph)
{...}
如何防止向VertexShape添加此附加参数?这是一种正常行为。SWIG的
%extend
指令在生成的代码中生成独立函数。如果在正文中使用<代码> $Auto/Cuth>,该函数将提供一个参数(名为“SUBE”),它是指向C++类实例的指针。p>
作为一个旁注:C++在引擎盖下做同样的事情。
此
指针作为第一个参数隐式传递给所有非静态成员函数。这是一种正常行为。SWIG的%extend
指令在生成的代码中生成独立函数。如果在正文中使用<代码> $Auto/Cuth>,该函数将提供一个参数(名为“SUBE”),它是指向C++类实例的指针。p>
作为一个旁注:C++在引擎盖下做同样的事情。
此
指针作为第一个参数隐式传递给所有非静态成员函数。谢谢,正如您所说,在所有非静态函数参数中添加了参数$self,我已将我的函数声明为静态函数,问题已解决。谢谢,正如您所说,参数$self被添加到所有非静态函数参数中,我已经将我的函数声明为静态函数,问题已经解决。
SWIGINTERN vgd::Shp< vgSofa::handler::VertexShape > vgSofa_handler_VertexShape_createVSWithBsicHandler(vgSofa::handler::VertexShape *self,vgd::Shp< vgSofa::handler::BasicHandler > h)
{...}