别人发过来的慧编程我怎么打开首先,打开慧编程软件界面后,鼠标点击右上角的Python编辑器按钮.等待模式加载完成后,点击左上角文件菜单下的新建作品按钮.接着,输入print ("Hello
qt5.15.0+VS019编译qmimeprovider.cpp失败
vs不能编译qt
1. 下载qt的安装包和vs2011的qt插件,大家可以到下面的地址进行下载 BBS: 官网: 本人是在BBS上找到的,官网上没仔细去找了(英文太多)。 2. 安装qt sdk 安装其实很简单了,基本上一路回车即可,主要是要注意下qt的安装路径最好安装在全英文路径而且中间没有空格, 安装好后,可以运行开始菜单里面的qt demo,直观感受下qt的强大功能! 界面非常炫酷 4. 编译qt qt默认使用mingw进行编译,如果要使用vs2011开发,需要将qt重新编译。 进 入开始菜单microsoft visual studio 2011,visual studio tools,visual sVS里正常的代码在QT里执行有问题?要怎么弄好QT的?
在安装 QT+MSVC环境的时候,该出的问题我想都让我碰上了。
问题1 :jom.exe 崩溃,构建不通过。
jom: ......... Error 219:19:11: 进程"E:\QT1\Tools\QtCreator\bin\jom.exe"退出,退出代码 2 。Error while building/deploying project untitled (kit: Desktop Qt 5.5.1 MSVC2015 64bit)When executing step "Make"这个我没有出现什么cl不是内部命令的提示,至于使用nmake就更错了,nmake运行就出问题,估计是安装时nmake就有问题了。所以不是环境变量之类的错误,由于我前期先安装的QT+MinGW,后来需要MSVC才安装的vs2015,估计是这个安装先后顺序导致一些配置不对,反正我的kit配置都没有错误提示了也不行,干脆直接全卸了重新来。这次OK了,msvc,mingw都能用了。后来看到有初始化msvc编译环境的脚本,如果不行就先使用下试试,没准就OK了,不用浪费时间重新安装(安装时间好长呀)
1
问题2 -1: error: LNK2019: 无法解析的外部符号 **,该符号在函数 ** 中被引用,看图说话。
无法解析的外部符号说明,该函数的库或头文件没有被引入,比如下面
qmfcapp.obj : error LNK2019: 无法解析的外部符号 __imp_SetWindowsHookExW,该符号在函数 "public: static bool __cdecl QMfcApp::pluginInstance(void *)" (?pluginInstance@QMfcApp@@SA_NPEAX@Z) 中被引用在QT中找到QMfcApp::pluginInstance函数查看了下使用到外部函数的地方SetWindowsHookEx,点击可以跳转到头文件WinUser.h,那就是库没有了。由于原来是MinGW,内部的库都导入了,转到MSVC后一些自带的系统库没有加进来。百度查找SetWindowsHookEx该函数所需库User32.lib,在电脑上搜了。然后在.pro工程文件中右键加入库如下
unix|win32: LIBS += -L'C:/Program Files (x86)/Windows Kits/8.1/Lib/winv6.3/um/x64/' -lUser32INCLUDEPATH += 'C:/Program Files (x86)/Windows Kits/8.1/Lib/winv6.3/um/x64'DEPENDPATH += 'C:/Program Files (x86)/Windows Kits/8.1/Lib/winv6.3/um/x64'
把加后缀的勾删了,我这window下好像没有专门的d版调试库。
OK。这时在库里就自动加上了下面这几行。1
2
3
4
1
问题3 User32.Lib:-1: warning: LNK4272:库计算机类型“X86”与目标计算机类型“x64”冲突
刚开始时找错了库,找到的是32位编译出来的user32.lib库,后来直接到系统盘window下找到了64位的就OK了。问题4 This application has requested the Runtime to terminate it in an unusual way
这个在我安装了vs2015就出现了这问题,没装时都好好的。这个上一篇有讲到,这次又遇上了,我真的是无语了,也是莫名其妙的又不报了。具体怎么弄好的我也摸不着,vs2015又装了VC++里的所有部分(MFC类,兼容XP什么的两个,原本就一个VC++编译器的),到qt安装目录里有个vcredist_msvc2015_x86运行,重启后也一样,然后还有什么,重新拷贝库?一堆事情,一个个试都不好,换vb,vs,突然之间就好了,可是VB来错误53,找不到dll了,vs来加载格式不正常,这个看问题5。但有一点可以肯定—-错误与下面的dll无关,这个是depends找不到有关的bug。问题5 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
这里是目标平台和库不一致,需要注意下,用MinGW编译的去MinGW版的QT库里找对应的库(debug版和release版),然后要注意的是它是32位的,所以vs里只能选择X86平台。貌似没有找到有64的MinGW版本的QT.
而MSVC我下的是64的,所以只能选则X64平台。拷贝库也是到msvc版的QT库里找。如果库位数不对,会呈粉红色。问题6 其他信息: 无法加载 DLL“bstdll.dll”: 找不到指定的程序。 (异常来自 HRESULT:0x8007007F)。
换成X86的拿mingw编译出来的试出这问题,拿到在VB下就是 实时错误53:找不到DLL的意思了。这个估计就是跟安装了vs2015的问题有关了。安装了vs2015后VC++估计把我一些32位的库给弄掉了,怎么都无法成功了。尝试下个msvc 32位的编译看是否一样。
问题7 error: C2373: “saveImage”: 重定义;不同的类型修饰符
extern "C" BSTDLLAPI void __stdcall saveImage(const char *file);
同样的代码用64的编译器和MinGW都没问题,换成32位的msvc就出问题了,
.h文件.cpp文件
void saveImage(const char *file){
dev.savePicture(file);
}平常看到的讲解导出dll都没要求实现里也要加上__stdcall,这里报错就是这个原因,.cpp里也加个__stdcall就OK了。
1
2
3
1
问题8 其他信息: 无法在 DLL“xxx.dll”中找到名为“xxx”的入口点。
到这一部至少说明,dll可以被找到,目标平台和生成的dll也是一致的,只是入口函数找不到,可能是导出名不对了,depends查看下果然名字被过度修饰了。变成了_function@bytenum形式。
怎么解决我不知道msvc的编译器有没有这个选项,直接改成这个名字算了。问题9 发生了 PInvokeStackImbalance
对PInvoke函数的调用导致堆栈不对称。先看看是不是调用协议不对,vb是__stdcall,vc++默认用__cdecl,如果一致了还出错,那可能是long要改成int32,这个尝试改下就行了。我就是这么解决的。
到此,无论是64还是32位都能用了。坑好多啊。MinGW版不知道为什么就是错误提示找不到dll,装了个VS2015麻烦这么多。有知道的大神可以解惑下。
有些人说MinGW版编译的dll不能在window下用是有问题的,反正我不装VS2015时一切都好好的。如上篇所述,而且也在别人机子上试过。现在没时间找这个问题了,能用就行了。
Qt5,QtAV使用,调试时,fatal error LNK1104: 无法打开文件“Qt5AVWidgetsd.lib”,怎么解决?
这段时间需要用QT开发一个播放直播流的功能,能够播放各种格式的直播流,并且CPU占用率不要太高(可以占用GPU),这些是我们的目标。
直播流推流的技术进展在上一篇博客中已经提到了,目前我的能力范围内只能推送RTMP格式的链接,所以需要播放端能够解析这种格式的链接。
下面是一张自己做的图,对QT可调用的几种播放方面的开源库进行对比:
这种方式有两个优点:
缺点:
代码示例:
1 QWidget wi; 2 QMediaPlayer* player = new QMediaPlayer(0, QMediaPlayer::VideoSurface); 3 QVideoWidget* vw = new QVideoWidget; 4 QVBoxLayout* lay = new QVBoxLayout; 5 lay->addWidget(vw); 6 vw->setMinimumSize(400, 300); 7 lay->setSizeConstraint(QLayout::SetMinimumSize); 8 wi.setLayout(lay); 9 10 player->setVideoOutput(vw); 11 12 QNetworkRequest req(QUrl("http://pull-g.kktv8.com/livekktv/100987038.flv")); 13 14 QMediaContent c(req); 15 player->setMedia(c); 16 player->play();
优点:
缺点:
优点:
缺点:
上图是目前支持的平台,链接中都是编译过可以直接用的库,只需要配置到相应位置即可
(头文件和lib库在QT的.pro文件中添加进去即可,DLL库需要将相应路径添加到系统环境变量中,具体可以参考:QT总结第3篇:如何在QT中添加.lib,.dll还有.h文件)
综合来说较为推荐
在VLC没配置成后,就搜索"qt rtmp",找到了这个项目。这是一个正在成长中的项目,发布日期为2018年4月3日,距离现在仅有11天。主要是为了实现基于FFmpeg的rtsp/rtmp网络流媒体播放库。
作者仅给出了相应的库文件,以及一个基于QT的可运行在Visual Studio中的例子。
在经过尝试使用VS运行失败后,还是决定使用最熟悉的QT Creator运行,然后仿照在VS平台的例子,自己修改出来了一个例子,见GITHUB仓库
但是这个例子可以解析HTTP的直播链接,如CCTV1的:http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8
对于RTMP的链接,虽然可以加载,但是总是无法解析,遂放弃FQFlib的方式,继续寻找新方式。于是找到了QT-AV。
官方介绍:
QtAV is a multimedia playback library based on Qt and FFmpeg. It can help you to write a player with less effort than ever before.
QtAV has been added to FFmpeg projects pagehttp://ffmpeg.org/projects.html
这个项目是2012年开始的,已经被ffmpeg官方收录了,的确是非常的方便。
下面简单写一下在Windows系统下的Qt-AV安装方式和使用方法,官方的文档在这里:https://github.com/wang-bin/QtAV/wiki/Build-QtAV,个人感觉没有说的很清楚,所以写一下自己踩过坑后的总结
参考之前我的文章:http://www.cnblogs.com/QingHuan/p/7685328.html
下载链接:https://ffmpeg.zeranoe.com/builds/
将右边的Shared版本和Dev版本都下载下来,分别是DLL动态链接库、头文件和LIB。
头文件和lib库在QT的.pro文件中添加进去即可(第三步再进行添加),DLL库需要将相应路径添加到系统环境变量中,具体可以参考:QT总结第3篇:如何在QT中添加.lib,.dll还有.h文件
Windows系统的环境变量一般在重启后才会生效。
头文件和LIB文件的书写示例:
git clone https://github.com/wang-bin/QtAV.git git submodule update --init
打开build-QtAV-Desktop_Qt_5_7_1_MSVC2015_64bit-Debug文件夹,这个文件夹是和git clone之后的那个目录同级的,
找到sdk_install.bat,这个脚本能够自动将相应的DLL文件复制到正确的位置,可以看一下代码,很容易理解:
View Code
此时就可以使用所有QT-AV的例子了,也可以创造自己的新工程并调用它。
注意:在DEBUG模式下编译的QT-AV只能让同样在DEBUG模式下编译的工程使用,
如果你想要使用windeployqt来打包你的程序(即生成绿色无安装版本程序),需要将QT-AV和你自己的工程都在QT Creator的release模式下进行编译。
更多关于使用windeployqt来打包程序的细节不在此赘述。我已经将自己打包的一个程序发布在了GITHUB上,可以参考一下:https://github.com/zhixuanli/qt-av-stream-player
切换当前目录到如下位置:
\QtAV\examples\simpleplayer
点击打开simpleplayer_sdk.pro来在QT Creator中打开这个工程,不要打开simpleplayer.pro;
然后找到playerwindow.cpp,将68行进行如下修改,即可打开指定直播流链接(任意ffmpeg支持的格式,RTMP也支持),而非从本地加载一个视频
1 // QString file = QFileDialog::getOpenFileName(0, tr("Open a video")); 2 QString file = "rtmp://live.hkstv.hk.lxdns.com/live/hks";
再编译-运行,点击open即可打开香港位置的这个RTMP格式的直播流
相应的源代码和绿色版程序已经放在了我的仓库里:https://github.com/zhixuanli/qt-av-stream-player
Qt-AV其实已经完成了FQFlib所要开发的对RTMP和RSTP格式直播流播放的支持,而且根据目前的实际测试其并不能播放RTMP(也可能是我自己没写好)
但是在已经有轮子的情况下,不太建议FQFlib的作者继续重新造轮子
RTMP测试源:rtmp://live.hkstv.hk.lxdns.com/live/hks
RTSP测试源:rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
HTTP和RTMP是直播流链接的格式,而直播流本身也有编码格式和封装格式。编码格式如h.264格式(也叫MPEG-4)等;封装格式则为MP4、WMV、FLV等。具体可以在推流时使用不同的ffmpeg参数进行设置。
H.264的维基百科介绍:
H.264,又称为MPEG-4第10部分,高级视频编码(英语:MPEG-4 Part 10, Advanced Video Coding,缩写为MPEG-4 AVC)是一种面向块,基于运动补偿的视频编码标准(英语:Video_coding_format) 。
MP4和MPEG4并不同:参考自:Difference between MPEG4 and MP4
综合来说,Qt-AV给我留下的印象最好,其经过了6个年头的发展,也有了多次的版本迭代,已经较为完善。
如果您想要使用QT开发功能强大,支持播放“格式”众多且代码简单的播放器,非常推荐使用Qt-AV
在QT编程中,我加了个头文件QNetwork文件,为什么编译说找不到该文件?我的里面包含有这个文件阿 ?
QT中没有这个文件吧 ,QNetwork是个关于网络操作的文件夹。 你在项目的属性里加上QNetwork所指的路径应该就行了,是配置问题 或者你加了QNetwork的上一级目录,你想用QNetwork下面的qsslsocket.h可用用 QNetwork/qsslsocket.h 我认为QNetwork不应该是个头文件Qt编译时找到了Qt库却找不到c++库路径
用这个,不用cmd
相关文章
- 详细阅读
- 详细阅读
-
你好 我想让孩子学编程 有没有好详细阅读
少儿编程应该如何入门,从哪里学比较好?少儿编程入门在童程童美学比较好。童程童美少儿编程体验课,点击可免费报名试听
童程童美在线课程采用分级模式,一二年级学生学习Scratch -
春草五轴抛光机怎么编程详细阅读
抛光实现报告没有找到完全匹配的,只能凑合着用,改改实际内容即可,格式可以借用。。。 资料一:生产见习报告: 五一期间,我到我舅舅那生产实习。他是个体工商户,是专业生产剑麻轮的商
-
从入行到cnc编程工程师需要经历什详细阅读
学CNC编程该从哪下手学起?初学编程的话软件要选好,选那边使用最多的编程软件,现在UG 用的势头比较好点。软件,先要熟练的使用,然后就是按部就班的跟着别人学吧。如果能够看懂图纸
-
单片机编程题不会?详细阅读
单片机编程题?振荡频率为6MHz,计时脉冲周期是2us,产生方波频率为2KHz, 周期500US,半个周期是250us,计数脉冲个数是125个,定时器方式2是8位定时器,最大计数值256,因此初值是256-125
-
如何把编程猫定制课的作品下载到电详细阅读
编程猫如何把编好的视频提取出来1、首先将编辑好的视频,按右键需要导出的角色,选择导出角色选项。
2、其次会生成一个编程猫的bcmp文件END1,在源码编辑器打开需要导入角色的作 -
数控编程求代码详细阅读
数控车床编程代码是什么?数控车床编程代码是G00快速定位指令,G01直线插补指令等。G00快速定位指令格式为G00XUZW,XZ为绝对编程时的目标点,UW为相对编程时的目标点,两轴同时以机床
-
智能语音打字多键可编程的鼠标吗?详细阅读
有没有可以语音打字的智能鼠标?可以,有一款狐狼的智能鼠标已经实现了语音的功能。什么鼠标可以语音输入文字?狐狼 智能鼠标就可以,狐狼智能鼠标运用的是 科大讯飞 的 语音识别 ,
-
avr课程基于Sam d21的编程详细阅读
AVR单片机课程设计(ATmega16芯片):如何用ICCAVR设计 IIR数字低通滤波器AVR单片机C语言开发入门指导(强烈推荐),内容涉及各种avr的编译器,一本书就可以学会ICC,CVA,IAR,GCC,等avr的