(0)摘要
# 之前在实习的时候,公司要求我做跨语言编程(py 和 C/C++),本人也积累了一些经验,也感谢学校导师们给我机会提高对跨语言编程的认识。不论是 c++ 调 py ,还是 py 调 c++ ,前者可以避免代码重写,直接使用现成的网络模型;后者能够提高程序的执行效率,一般部署的时候使用。这里我们写一篇 c++ 调用 python 脚本的笔记。同时给出动态链接库和说明文档,希望可以在今后的项目中得到应用。
# playground: GitHub - night-handsomer/code-for-playing: just for fun
(1)首先是 python 脚本的代码
# (1)以下代码其实就是使用 opencv 以灰度的格式打开图片。 传参 path 是图片的地址。
(2)C++ 部分代码
# (1)void TestQt2(string module, string func, string path) 就是接口函数了,我们暴露出去调用的,module 是文件名称,func 是函数名称,path 是图片的路径。
# (2)调用的例子:
#
(3)动态链接库
# 直接看我的笔记就可以了~~~
(4)最后看看结果还有一些说明
# (1)结果展示:
#(2)这里有个 bug,如果是 QT 和 Py QT 的调用,是会报错的,解决方法是优化 python 脚本。还有,我们使用的环境最好是单独的 python,而且是 base 环境,不能用虚拟环境!!同时,我们的动态库是使用的 python3.9 封装的,如果使用 python3.8 的话,测试会报错的(形如缺少 python39.dll 文件)
# (3)其实跨语言编程现成的有 pybind11 和 boost::python,好用,但是二者要么学习成本高或者配置环境的成本高,只能说看场景吧。
(5)参考文献
# Py_BuildValue()函数_小魔王降临的博客-CSDN博客_py_buildvalue python
# 哔哩哔哩大学