Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.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
python cpp通信中tensorflow 2.2 env的Pybind11异常_Python_C++_Tensorflow_Pyobject - Fatal编程技术网

python cpp通信中tensorflow 2.2 env的Pybind11异常

python cpp通信中tensorflow 2.2 env的Pybind11异常,python,c++,tensorflow,pyobject,Python,C++,Tensorflow,Pyobject,下面是CPP调用python文件的源代码,供参考 int main(int argc, char *argv[]) { PyObject *pName, *pModule, *pFunc; PyObject *pArgs, *pValue; int i; string pythonFunction = "sample_fun"; string pythonFile = "sample" string tensoflow_env = &qu

下面是CPP调用python文件的源代码,供参考

    int main(int argc, char *argv[])
{
PyObject *pName, *pModule, *pFunc;
PyObject *pArgs, *pValue;
int i;
string pythonFunction = "sample_fun";
string pythonFile     = "sample"
string tensoflow_env  = "tensorflow_env_path";
wchar *env = Py_DecodeLocal(tensoflow_env,NULL);
Py_SetPythonHome(env);
Py_Initialize();
pName = PyUnicode_DecodeFSDefault(pythonFile.c_str());
/* Error checking of pName left out */

pModule = PyImport_Import(pName);
Py_DECREF(pName);

if (pModule != NULL) {
pFunc = PyObject_GetAttrString(pModule, pythonFunction.c_str());
/* pFunc is a new reference */

if (pFunc && PyCallable_Check(pFunc)) {
    
    pValue = PyObject_CallObject(pFunc, NULL);
    if (pValue != NULL) {
        Py_DECREF(pValue);
    }
    else {
        Py_DECREF(pFunc);
        Py_DECREF(pModule);
        PyErr_Print();
        fprintf(stderr,"Call failed\n");
        return 1;
    }
}
else {
    if (PyErr_Occurred())
        PyErr_Print();
    fprintf(stderr, "Cannot find function \"%s\"\n", argv[2]);
}
Py_XDECREF(pFunc);
Py_DECREF(pModule);
}
else {
    PyErr_Print();
    fprintf(stderr, "Failed to load \"%s\"\n", argv[1]);
    return 1;
}
if (Py_FinalizeEx() < 0) {
return 120;
}
return 0;
def sample_fun():
   import tensorflow as tf
   return 'Success'
问题:

上面的代码在运行tensorflow2.0env时运行正常,但如果运行tensorflow2.2env,则在PYObject_CallObject(pFunc,NULL)中给出以下异常

< P>错误:微软C++异常:PyBIDEN11::ErrRoRyRead ySyt设置在内存位置XXXXX

关于上述问题的可能原因,任何机构都有想法吗? 注意:使用python 3.7.6构建Tensorflow2.2和使用python 3.7.7构建Tensorflow2.0