如何解决如何在 python (SWIG) 中调用 C++ 成员函数?
我想将我的 C++ 库类公开给 python,并且能够在 python 中调用该类中包含的任何函数。 我的示例库如下所示:
#include "example_lib.h"
lib::lib(){};
int lib::test(int i){
return i;
}
带有标题:
class lib{
lib();
int test(int i);
};
我的界面文件:
/* example_lib.i */
%module example_lib
%{
/* Put header files here or function declarations like below */
#include "example_lib.h"
%}
%include "example_lib.h"
我运行以下命令:
swig3.0 -c++ -python example_lib.i
g++ -c -fPIC example_lib.cc example_lib_wrap.cxx -I/usr/include/python3.8
g++ -shared -fPIC example_lib.o example_lib_wrap.o -o _example_lib.so
但是当我尝试调用成员函数时
example_lib.lib.test(1)
,
我只得到类型对象'lib'没有属性'test'。我如何让 swig 暴露成员函数?
这似乎是一个非常基本的问题,但如果有人能澄清通常是如何完成的,我将不胜感激。
解决方法
默认可访问性在 C++ 中为 .nvmrc
,然后您需要将其移动到 private
部分:
public:
还要注意class lib{
public:
lib();
int test(int i);
};
是一个实例方法,需要实例化类。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。