包含C ++类的Python目标的SWIG错误

时间:2018-03-02 13:19:36

标签: python c++ swig

我试图用一个使用SWIG的Python(3.6.2)通过单个类访问C ++库。

可以在这里找到C ++库: https://github.com/Navigator-Data/navdb-clients/tree/master/lang_clients/cpp_client

这是我的cpp_client_api.i文件:

/* File : cpp_client_api.i */
%module cpp_client_api

%{
#include "../cpp_client/cpp_client_api.hpp"
%}

%include "../cpp_client/cpp_client_api.hpp"

生成.py文件后,我发现我必须将其重命名为下划线作为前缀。

当我使用新生成的.py文件运行测试Python程序时,我收到此错误:

python ./n*
Traceback (most recent call last):
  File "./navdb_python_client_test.py", line 24, in <module>
    from _cpp_client_api import CppClientApi
  File "../_cpp_client_api.py", line 98, in <module>
    class CppClientApi(_object):
  File "../_cpp_client_api.py", line 135, in CppClientApi
    __swig_destroy__ = _cpp_client_api.delete_CppClientApi
AttributeError: module '_cpp_client_api' has no attribute 'delete_CppClientApi'

看起来像delete_CppClientApi是一个用于调用类的通用函数&#39;析构函数。原来的课程没有我专门编写的析构函数,我不确定这是否是一个问题。欢迎任何建议。

1 个答案:

答案 0 :(得分:0)

我最终使用distutils来编译Swig包装器代码:

python setup.py build_ext --inplace

杰森