Microsoft SDK 中Sample案例之Amcap項目 的运行方法(转)
http://blog.csdn.net/erick08/article/details/7194575
Microsoft SDK 中Sample之Amcap 的运行方法
写这篇文章的由衷是我想很多编程爱好者都可能会去尝试运行SDK的Sample,但微软提供的代码并不能直接编译,我开始发现运行报错时,还拙劣地以为是代码有误,竟然改动了少许代码,结果显然还是fail了。
网上查了很多关于编译失败的资料,有讲“无法解析的外部符号”,也有讲到具体代码中的类及头文件、库文件等等,下面讲下我最后成功的步骤。
注:如果中間遇到問題,請多多嘗試,最好先备份一下,请在原目录及原文件夹运行,以保持文件路径不变!
一、 我用的IDE是vs2008,系统是64位的,所以下载对应64位的Microsoft SDK并安装,我的是7.1版本。
二、 设置好IDE配置,工具——》选项——》项目和解决方案——》VC++目录
其中
把Micorsoft SDKs\Windows\v7.1\Include
Micorsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\common
添加进“包含文件”。
把Micorsoft SDKs\Windows\v7.1\Lib\x64
Micorsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug
Micorsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug_MBCS
Micorsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Release
Micorsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Release_MBCS
添加进“库文件”。
注:baseclasses\Debug等文件夹微软并不提供,需要我们自己打开baseclasses项目的解决方案进行编译(运行)才生成,我的做法是对Debug\Debug_MBCS\Release\Release__MBCS四种模式都进行编译(运行),之后再添加进库文件。
三、 设置项目属性,项目——》AmCap属性——》配置属性——》链接器——》输入
在“附加依赖项”中添加 Strmbase.lib/Strmbasd.lib winmm.lib Msacm32.lib
注:Strmbase.lib 是 bassclasses项目在Release 模式下生成的,Strmbasd.lib是Debug模式下生成的。
四、 现在可以正常运行AmCap了,得到的Exe文件只能在装有vs2008等工具下运行,为了可以脱离平台限制,设置如下:
项目——》AmCap属性——》配置属性——》C/C++——》代码生成
把运行时库设置为“多线程(/MT)”或“多线程调试(/MTd)”,此时
项目——》AmCap属性——》配置属性——》链接器——》输入
忽略特定库需对应添加为“libcmt.lib”或“libcmtd.lib”,
运行得到的可执行文件就与平台无关了。
Directshow\capture文件下的其他项目类似也可以正常运行,希望大家正常运行这些项目后有投入更大的兴趣去学习代码,增強信心。