Во-первых в режиме debug не хотят импортироваться файлы завязанные на загрузку .pyd файлов, видимо это связано с тем, что .pyd файлы release?
во вторых странная ошибка с PIL Image
программа не хочет выполнять через PyRun_SimpleString строчку
if(!PyRun_SimpleString("img = Image.fromstring(\"L\", (size, size), img_str)")) LogMsg(_T("erorr\r\n"));
хотя эта строчка нормально отрабатывает
if(!PyRun_SimpleString("import Image"))
пробовал сохранять img_str(бинарная строка) в бинарный файл, а потом в консоли его преобразовывать в изображения, изображение получается валидное.
вопрос как мне передать в с++ бинарную строку и распарсить её(хотя бы в raw пиксели).
например так я возвращаю флоат, а как возвратить бинарную строку?
bool CPythonInterface::call_python_func_float(char* module,char* func_name,PyObject *pArgs, float& f) { PyObject *pName, *pModule, *pFunc; PyObject *pValue; //Py_Initialize(); pName = PyString_FromString(module); /* Error checking of pName left out */ pModule = PyImport_Import(pName); Py_DECREF(pName); if (pModule != NULL) { pFunc = PyObject_GetAttrString(pModule, func_name); /* pFunc is a new reference */ if (pFunc && PyCallable_Check(pFunc)) { pValue = PyObject_CallObject(pFunc, pArgs); Py_DECREF(pArgs); if (pValue != NULL) { bool is_float= PyFloat_Check(pValue); f= PyFloat_AsDouble(pValue); //PyArg_Parse(pValue, "f", f); //так падает //printf("Result of call: %ld\n", PyInt_AsLong(pValue)); Py_DECREF(pValue); } else { Py_DECREF(pFunc); Py_DECREF(pModule); PyErr_Print(); fprintf(stderr,"Call failed\n"); return false; } } else { if (PyErr_Occurred()) PyErr_Print(); fprintf(stderr, "Cannot find function \"%s\"\n", func_name); return false; } Py_XDECREF(pFunc); Py_DECREF(pModule); } else { PyErr_Print(); fprintf(stderr, "Failed to load \"%s\"\n", module); return false; } //Py_Finalize(); return true; }