我开始使用类似于以下内容的结构来浏览现有的C ++库:
namespace MainNS
{
namespace A
{
class Class
{
//...
};
}
namespace B
{
class Class
{
//...
};
}
//...
}
一切都按预期工作,除了我在创建Python包层次结构时遇到麻烦。期望的层次结构将是:
MainNSpack/
MainNSpack/__init__.py
MainNSpackage/Apack/
MainNSpackage/Apack/__init__.py
MainNSpackage/Apack/Class.py
MainNSpackage/Bpack/
MainNSpackage/Bpack/__init__.py
MainNSpackage/Bpack/Class.py
我正在尝试按照SWIG文档http://www.swig.org/Doc3.0/Python.html#Python_nn72中的说明操作,很明显我必须自己定义这个目录结构并创建 init 文件。基于直觉,这应该如下工作:
//python_main.i
%module(package "MainNSPack") MainNSPack
%include python_a.i
%include pythom_b.i
//python_a.i
%module(package="MainNSPack.Apack") Apack
%{
#include "A/Class.h"
%}
%include "A/Class.h"
//python_b.i
%module(package="MainNSPack.Bpack") Bpack
%{
#include "B/Class.h"
%}
%include "B/Class.h"
问题(问题)如下:
package
指令在执行%module(package="Apack") Class
时是如何工作的,但它似乎对生成的文件没有影响Class
时,Python会查找二进制文件_Class
- 它在生成的swig python文件中的初始化代码中进行了硬编码。这是否意味着我必须为每个类都有单独的二进制文件。