如果你是嵌入的话,应该没问题。python的库会暴露c api的,你的qt程序照着python文档中的embedded章节就好。 看样子,你的是linux下的,不过一般头文件就是include/python.h,怎么会是include/python2.7呢?你写错了吧。库文件应该是在lib下面。
创新互联建站专注于赤坎网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供赤坎营销型网站建设,赤坎网站制作、赤坎网页设计、赤坎网站官网定制、成都小程序开发服务,打造赤坎网络公司原创品牌,更为您提供赤坎网站排名全网营销落地服务。
因为process.start()函数实质是采用命令行中"start XXX"的方式启动XXX。这里的XXX仅仅适用于大部分的exe可执行文件以及一些常用文件。对于py或者pyw文件都不行。
有两种解决方案:
另外编写一个bat用来启动py文件,就可以使用start启动这个bat就可以了;
使用另一个函数“QDesktopServices::openUrl”来启动py文件。具体使用方法请自行百度。不做过多说明。
#include QCoreApplication
//包含调用Python相应的头文件
#include Python.h
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//初始化Python解释器,这是调用操作的第一步
Py_Initialize();
if( !Py_IsInitialized() ){
return -1;
}
//执行单句Python语句,用于给出调用模块的路径,否则将无法找到相应的调用模块
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");
//获取qt_python_fun.py模块的指针
PyObject* pModule = PyImport_ImportModule("qt_python_fun");
if (! pModule){
printf("Can't open python file\n");
return -1;
}
//获取hello函数的指针
PyObject* pFunhello = PyObject_GetAttrString(pModule,"hello");
if (!pFunhello){
printf("Get function hello failed\n");
return -1;
}
//调用函数,传入参数为NULL
PyObject_CallFunction(pFunhello,NULL);
//销毁Python解释器,这是调用的最后一步
Py_Finalize();
return a.exec();
}
作者:sleepyjoker
链接:
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
你好!是要调用DLL吗?DLL和语言没有关系啊,直接LoadLibrary和GetProcAddress就可以了啊!注意取函数时要把参数和函数名要写对,要不然会出错
这个看你要求了,如果只是单纯调用,和Qt没什么关系,直接看python手册中C、C++调用python相关的内容就行了。
如果你的python代码中还需要操作Qt相关的东西,那么你需要的 PythonQt 这个第三方的模块(概念上类似于Qt自己的QtScript模块)