如何编译SDK VC++示例
By Olga Krovyakova - modified October 10, 2023, created April 1, 2019.
前言:
SolveigMM 视频编辑 SDK 是使用 DirectX SDK 9.0(2000 年 11 月)开发的。 一旦该版本不再可从 Microsoft 网站下载,此处将介绍如何使用仍然可用的版本.
Microsoft 建议使用 最新 Platform SDK (Windows SDK 6.1) 和 最新 DirectX SDK(2009 年 3 月) ,但不幸的是,这并不容易,因为那里遗漏了一些线索标头,例如 实例-dxtrans.h
因此 到目前为止,有两种使用 Microsoft SDK 的方法 :
1. 适用于 Windows Server 2008® 和 .NET Framework 3.5 ( v6.1 ) + DirectX 9.0 SDK 更新的 Microsoft Windows SDK -(2005 年 2 月)
2. DirectX 9.0 SDK 更新 -(2005 年 2 月) + DirectX 9.0 SDK 更新额外 -(2005 年 2 月)
对于 Microsoft Visual Studio 2008 及更高版本 ,您应该安装其他 SDK,如下所示:
适用于 Windows Server 2008® 和 .NET Framework 3.5 ( v6.1 ) 的 Microsoft Windows SDK 1328.9 MB
http://www.microsoft.com/downloads/details.aspx?FamilyID=E6E1C3DF-A74F-4207-8586-711EBE331CDC&displaylang=en
DirectX 9.0 SDK 更新(2005 年 2 月)额外 35.6 MB
http://www.microsoft.com/downloads/details.aspx?FamilyId=8AF0AFA9-1383-44B4-BC8B-7D6315212323&displaylang=en
DirectShow 基类应使用以下键进行编译:
C/C++,语言,将 wchar_t 视为内置类型 - 否 (/Zc:wchar_t-)
安装 Windows SDK 后,您’需要编译 DirectShow 基类以获得 strmbase.lib 和 strmbasd.lib。 默认情况下,基类位于此处:
“\Program Files\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow\BaseClasses”
您一定不能’混淆基类’ 库的 Unicode 和多字节版本.
更新 VisualStudio IDE 的选项: 将以下路径添加到 Includes 列表:
1)“\Program Files\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow\BaseClasses\” - 您应该将此路径放在 “包含” 的最开头 ] 列表;
2)“\DXSDK\包含”;
将以下路径添加到 库 列表:
1)“Program Files\Microsoft SDKs\Windows\v6.1\Lib”;
2)“Program Files\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow\BaseClasses\Debug”;
3)“Program Files\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow\BaseClasses\Release” - Unicode 编译的基类库;
4)“Program Files\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow\BaseClasses\Debug_MBCS”;
5)“Program Files\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow\BaseClasses\Release_MBCS” - 多字节编译的基类库;
6)“\DXSDK\ 库”;
对于 Microsoft Visual Studio 2005 ,您应该安装其他 SDK,如下所示:
1. DirectX 9.0 SDK 更新 -(2005 年 2 月)154.6 MB
http://www.microsoft.com/downloads/details.aspx?FamilyID=77960733-06E9-47BA-914A-844575031B81&displaylang=en
2. DirectX 9.0 SDK 更新(2005 年 2 月)额外 35.6 MB
http://www.microsoft.com/downloads/details.aspx?FamilyId=8AF0AFA9-1383-44B4-BC8B-7D6315212323&displaylang=en
以下是标题和库目录布局:
DirectX 9.0 SDK 更新额外(第二点)包含应编译并依赖于 DirectX 9.0 SDK 更新(第一点)中的某些标头的 DirectShow 基类
BaseClasses 解决方案位于此文件夹中:
"..\“..\Extras\DirectShow\Samples\C++\DirectShow\BaseClasses\baseclasses.sln”"
不幸的是,某些标头需要稍作修改; 否则 VC Studio 会产生编译错误.
“..\Extras\DirectShow\Samples\C++\DirectShow\BaseClasses\ctlutil.h”
COARefTime(长);
运算符=(长整型);
应该改为
COARefTime(长);
// 运算符=(长整型);
COARefTime& 运算符=(LONG);
“..\Extras\DirectShow\Samples\C++\DirectShow\BaseClasses\wxdebug.cpp”
静态 g_dwLastRefresh = 0;
应该改为
静态 DWORD g_dwLastRefresh = 0;
"“..\Extras\DirectShow\Samples\C++\DirectShow\BaseClasses\winutil.cpp”"
for ( UINT Count = 0;Count < 结果;Count++) {
应该改为
UINT 计数 = 0;
for ( 计数 = 0;计数 < 结果;计数++) {
"“..\Extras\DirectShow\Samples\C++\DirectShow\BaseClasses\outputq.cpp”"
对于 (iDone = 0;
iDone < nSamples || (m_nBatched!= 0 && m_bSendAnyway);
应该改为
长 iDone = 0;
对于 (iDone = 0;
iDone < nSamples || (m_nBatched!= 0 && m_bSendAnyway);
DirectShow 基类应使用以下键进行编译:
C/C++,语言,将 wchar_t 视为内置类型 - 否 (/Zc:wchar_t-)
Olga Krovyakova is the Technical Support Manager in Solveig Multimedia since 2010.
She is the author of many text and video guidelines of company's products: Video Splitter, HyperCam, WMP Trimmer Plugin, AVI Trimmer+ and TriMP4.
She works with programs every day and therefore knows very well how they work. Сontact Olga via support@solveigmm.com if you have any questions. She will gladly assist you!