通过嵌入 python 的 C++ 代码编写的代码调用外部 python 类并执行该类的方法(FileHandler)。这样可行。我在 C++ (libSome.so) 中生成了该代码的库,以便在带有 c_types 的 python 中使用,并制作一个包装器来尝试运行上述方法会产生分段错误。有任何想法吗?
(C++)这是嵌入代码,然后生成为共享库 (libSome.so):
...
/* Funcion de python */
setenv("PYTHONPATH", ".", 1);
Py_Initialize();
PyObject* module = PyImport_ImportModule("filehandler");
assert(module != NULL);
PyObject* class = PyObject_GetAttrString(module, "FileHandler");
assert(class != NULL);
PyObject* inst = PyInstance_New(class, NULL, NULL);
assert(inst != NULL);
result = PyObject_CallMethod(inst, (char*)"write", (char*)"(iiii)",ori,serv, id, timeStamp);
assert(result != NULL);
Py_Finalize();
(Python) 库使用的代码
import os
class FileHandler:
def __init__(self):
self.workingDirectory = os.getcwd()
pass
def write(self, NodoOrigen, Servicio, Id, payload):
try:
os.mkdir(str(NodoOrigen))
except:
pass
os.chdir(str(NodoOrigen)+"/")
try:
os.mkdir(str(Servicio))
except:
pass
os.chdir(self.workingDirectory)
os.chdir(str(NodoOrigen)+"/"+str(Servicio)+"/")
try:
f = open(str(Id),"a")
except:
print "No se puede abrir el archivo"
f.write(str(payload))
f.close()
os.chdir(self.workingDirectory)