C++调用python时,包含paddle库出现
收藏
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
收藏
请登录后评论
要改paddle源代码,在site-package里面的找到库,一处是dataset里面的image开头直接import cv2,另一处在fluid的init里面将最后的三行注掉,可能是python版本或者时路径环境错误还是其他未知bug问题,含有python引用第三方dll或者pyd之类操作,python再通过c++调用其解释器会引起调用冲突。
你好,我在paddlepaddle 2.0.2 框架下修改相关文件,但仍会出现首次 import paddle 弹出重复界面的情况。请问你那里是怎么解决的?