首页 Paddle框架 帖子详情
C++调用python时,包含paddle库出现
收藏
快速回复
Paddle框架 问答深度学习 1708 2
C++调用python时,包含paddle库出现
收藏
快速回复
Paddle框架 问答深度学习 1708 2

win7电脑配置了paddlepaddle的GPU环境,实验了一个AI studio上的模型,用cmd运行起来没问题,之后就想用C++去调用python。

但是因为python程序中import了paddle库,引发了一些调用问题。就是以下这两句。

import paddle
import paddle.fluid as fluid

在.cpp文件中调用语句如下,编译没问题,运行有问题,问题语句在

PyImport_ImportModule()

源程序如下,包含在一个MFC的按钮中

PyObject* pFunc = NULL;
PyObject* Strin = NULL;
PyObject* pReturn = NULL;
//main命令行参数
int argc = 1;
wchar_t * argv[] = { L" " };
PySys_SetArgv(argc, argv);   //加入argv参数 否则出错
PyObject* pModule = PyImport_ImportModule("test_python");  //参数为Python脚本的文件名

如果不加第456行的话,当单机按钮之后,当前界面会重复地再弹出一个,关掉重复弹出的界面后,PyImport_ImportModule()函数会将pModule清空为NULL。

因此在网上看到C++加载包含tensorflow第三方库的时候需要加456行代码,具体跳转:https://blog.csdn.net/qq_34662299/article/details/87559942?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param

加上代码之后可以运行了,但是还是会先弹出一个重复的界面,关掉重复界面之后才正常运行。应该paddle库的原因,但具体为啥会重复弹窗,如何解决,同时问下为啥要加第456行代码?有没大神,想请教一下,官方能看到最好。

0
收藏
回复
全部评论(2)
时间顺序
哈哈吼吼嘿哦嘿
#2 回复于2020-12

要改paddle源代码,在site-package里面的找到库,一处是dataset里面的image开头直接import cv2,另一处在fluid的init里面将最后的三行注掉,可能是python版本或者时路径环境错误还是其他未知bug问题,含有python引用第三方dll或者pyd之类操作,python再通过c++调用其解释器会引起调用冲突。

0
回复
我的安静不安静
#3 回复于2021-05

你好,我在paddlepaddle 2.0.2 框架下修改相关文件,但仍会出现首次 import paddle 弹出重复界面的情况。请问你那里是怎么解决的?

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户