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

SWIG error for Python target wrapping C++ class

本文关键字:SWIG 错误 类的 C++ 目标 包装 Python      更新时间:2023-10-16

我正在尝试使用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是一个通用函数,用于调用类的析构函数。最初的类没有我专门编写的析构函数,我不确定这是否有问题。欢迎任何建议。

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

python setup.py build_ext--就地

Jason