DirectShow开发笔记与问题记录(2017.11.7更新)
来源:互联网 发布:linux卸载软件包 编辑:程序博客网 时间:2024/05/16 18:07
本博文主要记录本人在使用DirectShow框架,进行播放器、流媒体处理开发过程中遇到的问题以及解决的方法。一方面作为笔记,方便日后参考,另一方面也记录一些疑难杂症,供大家查询。
问题:
1.使用Qt进行DirectShow开发时,遇上“无法解析的外部符号”
此部分错误包括“cocreateinstance”及“sysfree”等一些com件常用的操作。
本人此前已include相关的dshow.h和windows.h头文件,也在pro文件里面,添加了lib。此时,右键可以查找到报错的方法对应的头文件及定义。
解决:
网上有人指出,在Qt里面,构建——qmake(包含清理和重构)一次,如果pro文件引入正确,一般可以解决。
但我qmake多次,仍报错,包括清理生成的目录及重启Qt。最后发现是,VS下默认缺省添加的一些lib没有引入。
在我加入以下lib之后,qmake后成功运行。
kernel32.lib \
user32.lib \
gdi32.lib \
winspool.lib \
comdlg32.lib \
advapi32.lib \
shell32.lib \
ole32.lib \
oleaut32.lib \
uuid.lib \
odbc32.lib \
odbccp32.lib\
这边再说一下普遍的排除过程:1.首先确定对应的lib添加进了pro中。(无法解析的外部符号,意指无法根据头文件找到对应的库)
2.尝试qmake及清理重构工程
3.pro中顺序,先INCLUDEPATH,再LIBS
4.检查库的版本,是否与Qt编译版本对应(win32及64)
2.开发DirectShow Filter的时候,遇上dll无法注册,显示“模块加载失败……找不到指定模块”
问题描述:
进行一个转换filter开发的时候,一开始继承“CTransInplaceFilter”进行开发。此时过程中一切正常,而后发现需要更改输出格式,并重新分配Allocate和buffer大小,因此更改了继承,选择使用“CTransformFilter”进行开发。
更换了父类之后,修改了构造函数和createInstance等参数后,未进行调试,直接继续进行开发。
1.调试的时候,发现graphstudionext中选中Filter双击,无法再界面中出现Filter框体。
2.添加了断点,发现没有触发任何的构造、创建实例函数。
3.graphstudionext无法注销filter的注册,regsvr32无法注册也无法注销filter的注册(DLL)。
4.期间代码未做任何删减,仅有必要的函数override。
解决:
通过拷贝项目,进行回滚测试,定位到了两个函数引起了DLL注册错误。
BreakConnect(PIN_DIRECTION dir)
CompleteConnect(PIN_DIRECTION direction, IPin *pReceivePin)
我在这两个函数里面调用了外部的FFMpeg库。
此时,我想起我没有将FFMpeg库对应的dll文件拷贝到工程生成的程序目录中。
因此,这是一个由于Filter(COM件)内包含了外部库调用,依赖库找不到dll文件引起的注册失败问题。
将FFMpeg的DLL文件拷贝到release(生成)的目录中,com件正常注册通过。
- DirectShow开发笔记与问题记录(2017.11.7更新)
- DirectShow开发指南(笔记)
- 【开发问题记录,持续更新..】
- DirectX 基础 (DirectShow 开发指南笔记)
- Directshow开发笔记
- MAVEN学习开发问题记录帖(持续更新...)
- IOS开发-笔记记录-------------持续更新
- 问题记录(持续更新)
- 问题记录(持续更新)
- 问题记录(持续更新)
- Android开发遇到的问题笔记(持续更新)
- Android 开发笔记(3)——SDK更新问题
- 游戏开发流程与思想学习笔记(持续更新)
- 苹果开发 笔记(91)cocopods 插件升级问题记录
- 苹果开发 笔记(80)升级IOS 9 和 XCode 7 引起的问题记录
- 苹果开发 笔记(80)升级IOS 9 和 XCode 7 引起的问题记录
- 记录几点在开发中遇到的问题 2015-7-28 (会更新)
- VS2015 编译问题记录(更新)
- Spring框架中ModelAndView、Model、ModelMap的区别
- [6-02]springaop
- 泛型编程之类模版
- 触类旁通,从400错误看Nginx常见故障与修复
- 37.数组
- DirectShow开发笔记与问题记录(2017.11.7更新)
- svn 命令
- 在编译项目的时候出现:Could not calculate build plan: Plugin org.apache.maven.plugins:maven-resources-plugin:2.
- 机器学习中的特征选择
- 嵌入式linux QT环境搭建配置命令
- web.xml 配置
- Spring+Mybatis整合报错Mapped Statements collection does not contain value原因之一
- 程序构建原理
- Ubuntu下MySQL的安装及远程连接配置等配置