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 更容易解决。