关于 产品 支持 FAQ Blog

如何编译SDK VC++示例

image

 

  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 月)


 

免费试用视频编辑 SDK

 

image

对于 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\ 库”;

image

对于 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

以下是标题和库目录布局:

image
image

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-)

 

免费试用视频编辑 SDK

 

 

 About the author

imageOlga 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!