Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SWIG、Python包和visualstudio 我开始用现有的类似于下面的结构来浏览现有的C++库: namespace MainNS { namespace A { class Class { //... }; } namespace B { class Class { //... }; } //... }_Python_C++_Visual Studio_Swig - Fatal编程技术网

SWIG、Python包和visualstudio 我开始用现有的类似于下面的结构来浏览现有的C++库: namespace MainNS { namespace A { class Class { //... }; } namespace B { class Class { //... }; } //... }

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 我在这里尝

除了在创建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文档中的说明进行操作,很明显,我必须自己定义这个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文件会试图引用不同的二进制文件。。。