SWIG 包装器将 new_ 前缀添加到 class 名称并且无法获取 class 方法
SWIG wrapper adding new_ prefix to the class name and unable to get class method
我已经为采用 2 个字符串参数的简单 C++ void 函数编写了包装器。
由于某些原因,当我尝试创建我的 class 的对象时,我收到“名称 'my class name' 未定义”的名称错误。
当我尝试创建对象并在 class 名称之前指定 new_ 前缀时,对象已创建,但我仍然无法使用类似的名称技巧调用我的函数。
下面是接口代码和classes:
%module python_module
%{
#include "python_wrapper.h"
%}
%import std_string.i
%include "python_module.h"
python_wrapper.h
#ifndef PYTHON_WRAPPER_H
#define PYTHON_WRAPPER_H
#include <string>
class Separator
{
public:
Separator();
~Separator();
public:
void separate(const std::string& Path, const std::string& destFolder);
};
#endif
强文本
#include "python_wrapper.h"
#include <separator.h>
Separator::Separator()
{
}
Separator::~Separator()
{
}
void Separator::separate(const std::string& Path, const std::string& destFolder)
{
::SomeSeparate(assemblyPath, destFolder);
}
我用 cmake 构建一切。
当我在终端 运行:
python3
>>> from _MyModule import *
>>> separator = Separator()
I'm getting name error : name 'Separator' is not defined.
有人可以帮忙吗?
同时,当我发短信时
>>> separator = new_Separator()
正在创建对象,但即使在这之后我也无法调用我的函数。
使用 pybin11 而不是 SWIG。对于我的任务,这比使用 swig 更容易解决。
我已经为采用 2 个字符串参数的简单 C++ void 函数编写了包装器。 由于某些原因,当我尝试创建我的 class 的对象时,我收到“名称 'my class name' 未定义”的名称错误。 当我尝试创建对象并在 class 名称之前指定 new_ 前缀时,对象已创建,但我仍然无法使用类似的名称技巧调用我的函数。 下面是接口代码和classes:
%module python_module
%{
#include "python_wrapper.h"
%}
%import std_string.i
%include "python_module.h"
python_wrapper.h
#ifndef PYTHON_WRAPPER_H
#define PYTHON_WRAPPER_H
#include <string>
class Separator
{
public:
Separator();
~Separator();
public:
void separate(const std::string& Path, const std::string& destFolder);
};
#endif
强文本
#include "python_wrapper.h"
#include <separator.h>
Separator::Separator()
{
}
Separator::~Separator()
{
}
void Separator::separate(const std::string& Path, const std::string& destFolder)
{
::SomeSeparate(assemblyPath, destFolder);
}
我用 cmake 构建一切。 当我在终端 运行:
python3
>>> from _MyModule import *
>>> separator = Separator()
I'm getting name error : name 'Separator' is not defined.
有人可以帮忙吗?
同时,当我发短信时
>>> separator = new_Separator()
正在创建对象,但即使在这之后我也无法调用我的函数。
使用 pybin11 而不是 SWIG。对于我的任务,这比使用 swig 更容易解决。