SWIG、Python包和visualstudio 我开始用现有的类似于下面的结构来浏览现有的C++库: namespace MainNS { namespace A { class Class { //... }; } namespace B { class Class { //... }; } //... }
除了在创建Python包层次结构时遇到问题外,所有工作都按预期进行。所需的层次结构将是:SWIG、Python包和visualstudio 我开始用现有的类似于下面的结构来浏览现有的C++库: namespace MainNS { namespace A { class Class { //... }; } namespace B { class Class { //... }; } //... },python,c++,visual-studio,swig,Python,C++,Visual Studio,Swig,除了在创建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 我在这里尝
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文档中的说明进行操作,很明显,我必须自己定义这个dir结构并创建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"
问题如下:
namespace MainNS
{
namespace A
{
class Class
{
//...
};
}
namespace B
{
class Class
{
//...
};
}
//...
}
我试图了解在执行%modulepackage=Apack类时package指令是如何工作的,但它似乎对生成的文件没有任何影响
导入say类时,Python将查找二进制类——它是在生成的swig Python文件中的初始化代码中硬编码的。这是否意味着我的每个类都必须有单独的二进制文件。
如果2的答案是肯定的,那么如何使用VisualStudio环境处理这个问题?我有一个包含所有SWIG.I文件的项目。如果我指定不同的模块名称,那么将生成多个.py文件。但它只生成一个DLL。这似乎行不通,因为多个py文件会试图引用不同的二进制文件。。。