我在使用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();