我试图从C ++执行python字节码。这是我的代码:
#include <Python.h>
#include <iostream>
#include <marshal.h>
using namespace std;
int main(){
PyObject *pName, *pModule, *pFunc;
PyObject *pArgs, *pValue;
//cout<<233<<endl;
Py_Initialize();
FILE *fff = fopen("./a.pyc","br");
pModule = PyMarshal_ReadObjectFromFile(fff);
//Py_DECREF(pModule);
//cout<<PyCode_GetNumFree(pModule);
//PyImport_ExecCodeModule("asd",pModule);
pValue = PyLong_FromLong(123);
cout<<PyCode_Check(pModule); // here causes segmentation fault
return 0;
}
然后,我意识到当我尝试获取pModule->ob_type
的值时出现了问题。
我的平台:macos 10.13
在自制或miniconda中尝试过python
我该如何解决?