SWIG,Python包和Visual Studio

时间:2015-04-16 18:42:50

标签: python c++ visual-studio swig

我开始使用类似于以下内容的结构来浏览现有的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"

问题(问题)如下:

  1. 我试图了解package指令在执行%module(package="Apack") Class时是如何工作的,但它似乎对生成的文件没有影响
  2. 导入说Class时,Python会查找二进制文件_Class - 它在生成的swig python文件中的初始化代码中进行了硬编码。这是否意味着我必须为每个类都有单独的二进制文件。
  3. 如果回答2)是,那么如何使用Visual Studio环境处理?我有一个包含所有SWIG .i文件的项目。如果我指定不同的模块名称,那么将生成多个.py文件。但它产生一个DLL。而且似乎这不起作用,因为多个py文件会尝试引用不同的二进制文件......

0 个答案:

没有答案