最近在用qt写一个音乐播放器,由于播放器需要获取网上音乐,所有我搭载了一个python的音乐爬虫,在c++上面跑python怎么配置环境网上一大堆博客讲了很清晰。下面我来说说我遇见的坑。
1、中文问题
在vs上面编码是unicode编码,而python上面的编码为utf-8,两种不同格式的编码,假如不解决编码问题,c++传中文给python会直接出现异常,python传中文给c++也会出现异常了。在c++中加入一行代码#pragma execution_character_set("utf-8")这个表示你的c++的编码格式为utf-8,现在两方能互传中文了。但是utf-8编码的中文在vs上面显示是乱码形式的,由于我是在qt上面搭载,qt用的也是utf-8编码,所有我无需改变编码了,qt上面不乱码就行。这里如果大家想要在vs上面也显示正常,给大家一个方向去Google一下utf-8编码转换为Unicode编码,代码很少的,就是字节的转换。
2、关于qt和python的宏冲突问题
当你在qt里面加入#include<Python.h>头文件,里面定义的宏跟qt的宏会产生冲突,解决方法,加入下面一段就可以了
#pragma push_macro("slots")
#undef slots
#include<Python.h>
#pragma pop_macro("slots")
宏定义冲突报错为 C2143 语法错误: 缺少“;”(在“*”的前面)
3、c++传参给python
这里面(ss)是指把a,b打包成一个元组,然后传过去
4、关于第三方库问题报错
在代码中加行python路径就行了
Py_SetPythonHome(L"C:\\Users\\浩南\\AppData\\Local\\Programs\\Python\\Python37");
暂时先更新这些问题,遇到问题后再更新,需要代码的可以下方留言,我就更新到github,毕竟还有一些小细节没有处理好,想再完美点
附一张,搜索付费音乐的截图(界面和素材都是借鉴的别人的)