Python Embedded C++
Python Embedded C++
我读了几本关于Python嵌入C 的教程。我参考了Python对象。https://docs.python.org/3/c-api/function.html
python脚本:
import picamera
from pylibdmtx.pylibdmtx import decode
from time import sleep
import cv2
def test():
camera = picamera.PiCamera()
camera.start_preview()
sleep(10)
camera.stop_preview()
camera.capture('image3.png')
camera.close()
data = decode(cv2.imread('/home/pi/image3.png'))
return(data)
C 脚本
#include<Python.h>
#include<string>
int main(){
String data2;
Py_Initialize();
***Doing Some Stuff TO GET data from test() function in python script and store in variable data2
Py_Finalize();
}
我曾经使用pyrun_simplestring((以前可以使用。但是,它不能将变量传递给C 。我想要的结果是它可以将字符串存储到C 的变量。示例C 执行Python脚本,Python函数返回" 1234"。和" 1234"存储在C 变量(data2(
请帮助我解决这个问题。这是我第一次嵌入C 的Python,请提供一些指南。
再次,如果可以在
上为我提供解决方案***做一些事情以从python脚本中获取test((函数的数据,并存储在可变data2
中非常感谢....欣赏
如果我正确理解,则希望您的C 代码调用您的Python test((函数,并将该函数的字符串结果恢复,以便C 代码可以对其进行操作。如果是这样,我认为这样的事情会为您带来困难:
std::string data;
char fileName[] = "my_test_python_script.py";
PyObject * moduleObj = PyImport_ImportModule(filename);
if (moduleObj)
{
char functionName[] = "test";
PyObject * functionObj = PyObject_GetAttrString(moduleObj, functionName);
if (functionObj)
{
if (PyCallable_Check(functionObj))
{
PyObject * argsObject = PyTuple_New(0);
if (argsObject)
{
PyObject * resultObject = PyEval_CallObject(functionObj, argsObject);
if (resultObject)
{
if ((resultObject != Py_None)&&(PyString_Check(resultObject)))
{
data = PyString_AsString(resultObject);
}
Py_DECREF(resultObject);
}
else if (PyErr_Occurred()) PyErr_Print();
Py_DECREF(argsObject);
}
}
Py_DECREF(functionObj);
}
else PyErr_Clear();
Py_DECREF(moduleObj);
}
std::cout << "The Python test function returned: " << data << std::endl;
相关文章:
- 意外的 IConnectionPointImpl::不建议调用 Windows Embedded Compact 7
- 如何在"XAML for Windows Embedded (Compact 2013)"中切换图像
- 如何将 Chromium Embedded Framework 与 Visual Studio 2017 (C++) 一
- UCRTbase.dll涉及TCP通信的C ++ Windows Embedded Standard崩溃
- 如何在C++中嵌入 Chromium Embedded Framework
- Python Embedded C++
- cudaMalloc/cudaMemcpy with embedded objects/structures
- QT for Embedded Linux VNC Server 是否已启用互联网
- Chromium Embedded如何从c++执行javascript回调
- 是否可以使用自己编译的Chromium Embedded编译CefSharp
- Chromium Embedded如何检测我们是否作为子流程运行
- 使用libcef_static.lib静态编译Chromium Embedded 3项目
- 使用write()方法在Embedded IWebBrowser2中完成DocumentComplete事件
- 哪个文件在Windows Embedded Compact 7.0上配置缓存
- 我的应用程序创建的Windows CE/Embedded C++非易失性文件在重新启动时被删除
- QueryPerformanceCounter() Test for Windows Embedded Compact
- Windows Embedded Compact 2013 - 初始应用程序焦点
- 无法在 Debian 7 64 位上链接 Chromium Embedded Framework 3
- 将信息从 Chromium Embedded (Javascript) 发送到包含C++的应用程序
- 如何枚举连接到Windows Embedded 7上根集线器的第一个端口的USB集线器