Python 目标包装 C++ class 的 SWIG 错误
SWIG error for Python target wrapping C++ class
我正在尝试包装一个 C++ 库,它可以通过单个 class 和 Python (3.6.2) 使用 SWIG 访问。
可在此处找到 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 文件后,我发现我必须重命名它以使用下划线作为前缀。
当我 运行 一个测试 Python 程序使用新生成的 .py 文件时,我得到这个错误:
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 是一个用于调用 class 析构函数的通用函数。原来的 class 没有我专门写的析构函数,我不确定这是否有问题。欢迎任何建议。
我最终使用 distutils 编译了 Swig 包装器代码:
python setup.py build_ext --inplace
贾森
我正在尝试包装一个 C++ 库,它可以通过单个 class 和 Python (3.6.2) 使用 SWIG 访问。
可在此处找到 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 文件后,我发现我必须重命名它以使用下划线作为前缀。
当我 运行 一个测试 Python 程序使用新生成的 .py 文件时,我得到这个错误:
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 是一个用于调用 class 析构函数的通用函数。原来的 class 没有我专门写的析构函数,我不确定这是否有问题。欢迎任何建议。
我最终使用 distutils 编译了 Swig 包装器代码:
python setup.py build_ext --inplace
贾森