我试图用一个使用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;析构函数。原来的课程没有我专门编写的析构函数,我不确定这是否是一个问题。欢迎任何建议。
答案 0 :(得分:0)
我最终使用distutils来编译Swig包装器代码:
python setup.py build_ext --inplace
杰森