编译directshow若干问题的解决
来源:互联网 发布:mssql数据库日志截断 编辑:程序博客网 时间:2024/06/04 18:27
编译directshow若干问题的解决(原创+转):http://blog.sina.com.cn/s/blog_639a2ad70101kpen.html
(2013-05-22 12:31:54)转载▼
1.安装好windows sdk,进入directshow目录下面的directshow\baseclasses,打开baseclasses.sln项目文件,编译,Debug目录下生成strmbasd.lib
2.新建vc filter工程,到工程属性->c/c++下添加包含目录,此步骤为添加directx头文件和directshow头文件,添加以下三个目录
Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\common
Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses
Microsoft SDKs\Windows\v7.1\Include
3.到链接器->常规->附加库目录,添加对应的lib文件
Microsoft SDKs\Windows\v7.1\Lib
Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug
4.到 链接器->常规->附加依赖项,指定在上述第3步的目录内,添加哪些lib文件
添加如下两个文件
winmm.lib
"C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug\strmbasd.lib"
注意上面添加strmbasd.lib必须指定完整路径,否则系统会查找到系统平台下的strmbasd.lib,指定完整路径时必须两端加上双引号
5.源码文件里添加头文件
#include <streams.h>
编译,假如报错的话,见下:
编译directshow问题的解决
use vs2005 compiler directshow baseclasses has something error
1.ctlutil.h
modify as below:
//operator=(LONG);
COARefTime& operator=(LONG);
2.winutil.cpp
modify as below:
UINT Count;
for (Count = 0;Count < Result;Count++) {
3.outputq.cpp
modify as below:
long iDone;
for (iDone = 0;
4.wxdebug.cpp
modify as below:
//static g_dwLastRefresh = 0;
static DWORD g_dwLastRefresh = 0;
如果編譯程式出現
error LNK2019: 無法解析的外部符號 "int __stdcall lstrcmpWInternal
error LNK2019: 無法解析的外部符號 "int __cdecl wsprintfWInternal
error LNK2019: 無法解析的外部符號 "int __stdcall lstrcmpiWInternal
之類的錯誤
這是baseclasses編譯時有個設定要變更
就是project屬性->組態屬性->C/C++->語言之下的 "將wchar_t當作Built-in型別" 設為false
就可以解決上述link error的問題
如果編譯程式link strmbase.lib or strmbasd.lib出現以下的error
strmbasd.lib(dllentry.obj) : error LNK2001: unresolved external symbol "class CFactoryTemplate * g_Templates" (?g_Templates@@3PAVCFactoryTemplate@@A)strmbasd.lib(dllsetup.obj) : error LNK2001: unresolved external symbol "int g_cTemplates" (?g_cTemplates@@3HA)
則重新修改baseclasses project的檔案內容
CFactoryTemplate g_Templates[1] = {
{ L"SystemClock", &CLSID_SystemClock, CSystemClock::CreateInstance} //修改後;
// {&CLSID_SystemClock, CSystemClock::CreateInstance} //原本的;
};
另外在vc Project->Settings...->C/C++的 preprocessor definitions:加入FILTER_DLL
然後重新編譯strmbase.lib and strmbasd.lib即可
1.ctlutil.h
modify as below:
//operator=(LONG);
COARefTime& operator=(LONG);
2.winutil.cpp
modify as below:
UINT Count;
for (Count = 0;Count < Result;Count++) {
3.outputq.cpp
modify as below:
long iDone;
for (iDone = 0;
4.wxdebug.cpp
modify as below:
//static g_dwLastRefresh = 0;
static DWORD g_dwLastRefresh = 0;
如果編譯程式出現
error LNK2019: 無法解析的外部符號 "int __stdcall lstrcmpWInternal
error LNK2019: 無法解析的外部符號 "int __cdecl wsprintfWInternal
error LNK2019: 無法解析的外部符號 "int __stdcall lstrcmpiWInternal
之類的錯誤
這是baseclasses編譯時有個設定要變更
就是project屬性->組態屬性->C/C++->語言之下的 "將wchar_t當作Built-in型別" 設為false
就可以解決上述link error的問題
如果編譯程式link strmbase.lib or strmbasd.lib出現以下的error
strmbasd.lib(dllentry.obj) : error LNK2001: unresolved external symbol "class CFactoryTemplate * g_Templates" (?g_Templates@@3PAVCFactoryTemplate@@A)strmbasd.lib(dllsetup.obj) : error LNK2001: unresolved external symbol "int g_cTemplates" (?g_cTemplates@@3HA)
則重新修改baseclasses project的檔案內容
CFactoryTemplate g_Templates[1] = {
{
//
};
另外在vc Project->Settings...->C/C++的 preprocessor definitions:加入FILTER_DLL
然後重新編譯strmbase.lib and strmbasd.lib即可
ps:红色的解决了问题
- 编译directshow若干问题的解决
- 编译directshow若干问题的解决(原创+转)
- VS2005编译DirectShow的问题与解决
- C++编译的若干问题
- [DirectShow] SDK demo Bouncing Ball, 若干问题及解决思路
- DirectShow示例CAMSchedule找不到编译错误的解决
- CLM框架的编译及自己在编译过程中的若干问题的解决
- 关于编译选项的若干问题
- DirectShow的filterGrabber编译
- DirectShow的filterGrabber编译
- -------------------iOS需要解决的若干问题-----------------
- directshow编译遇到的错误
- 编译LINUX内核时出现的若干问题
- Ueditor使用方法及其若干问题的解决
- 编译directshow filter的vc6的配置
- VS.NET 2003编译DirectShow的问题
- VS2005 directshow 编译开发环境的配置
- 编译directshow的示例程序baseclasses
- 编译小结(2) GCC常见用法及技巧
- 编译小结(3) 动态库(.so)编译及二种调用技巧
- MYSQL 优化数据库结构
- 为 SELECT.options 对象增加或删除选项的方法在各浏览器中的支持情况不同
- 破解Oracle ERP密码
- 编译directshow若干问题的解决
- paip.语义相关是否可在 哈米 的语义分析中应用
- 数据的游戏:冰与火
- myeclipse中项目名称改掉,造成cvs版本混乱问题解决(有很多代码未提交)
- 编译小结(4) 说说静态库(.a)
- 线程同步
- mahout学习(1)userCF+itemCF
- How to protect your CDN origin server
- 证书