使用SWIG从Python脚本设置C ++变量

时间:2016-10-21 16:37:07

标签: python c++ swig

我在使用SWIG和Python在C ++中设置变量时遇到了问题。我有一个带变量和get和set函数的类,它们都是静态的。 我想要做的是在Python脚本中设置静态变量,但是一旦它离开PyRun_SimpleFile函数,该变量就会被设置回它的原始值。

那么如何使用Python / SWIG在C ++中设置变量?

minimal.h

    class Minimal
{
public:
    static int Minimal::var;
    static int Minimal::GetVar() { return var; }
    void Minimal::SetVar(int x){ var = x; }
};

minimal.i

%module minimal

%{
#define SWIG_FILE_WITH_INIT
#include "minimal.h"
%}

%include "minimal.h"

Python脚本

import minimal

m1 = minimal.Minimal()

m1.SetVar(10)

调用Python脚本

// Initialize Python
    Py_Initialize();

    // Perform Python actions here.
    PyRun_SimpleString("import sys");
    PyRun_SimpleString("sys.path.append('../Python')");
    PyRun_SimpleString("sys.path.append('../Python/Scripts')");

    fp = _Py_fopen(directory, "r");
    PyRun_SimpleFile(fp, directory);

    Py_Finalize();

0 个答案:

没有答案