系统中装有2004(summer)的DirectX 9.0 SDK,vc6, vs2010
baseClasses已用2010编译,之前用vc6配合directshow做过点音频提取,见博客http://blog.csdn.net/kevin_zcwen/article/details/7892176
最近想研究下filter,于是便想将DirectX 9.0 SDK自带的samples编译
找到了一个名叫textOut的filter, 用vs2010编译报如下错误
大致意思是错误发生在link阶段,找不到正确配置的可能性大一些,请各位大牛帮忙看看1>------ 已启动生成: 项目: textout, 配置: Debug Win32 ------
1>生成启动时间为 2013-2-4 13:29:46。
1>InitializeBuildStatus:
1>  正在对“.\Debug\textout.unsuccessfulbuild”执行 Touch 任务。
1>ClCompile:
1>  所有输出均为最新。
1>ResourceCompile:
1>  所有输出均为最新。
1>ManifestResourceCompile:
1>  所有输出均为最新。
1>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(990,5): warning MSB8012: TargetPath(C:\Program Files\Microsoft DirectX 9.0 SDK (Summer 2004)\Samples\C++\DirectShow\Filters\TextOut\.\Debug\textout.dll) 与 Linker 的 OutputFile 属性值(C:\Program Files\Microsoft DirectX 9.0 SDK (Summer 2004)\Samples\C++\DirectShow\Filters\TextOut\Debug\textout.ax)不匹配。这可能导致项目生成不正确。若要更正此问题,请确保 $(OutDir)、$(TargetName) 和 $(TargetExt) 属性值与 %(Link.OutputFile) 中指定的值匹配。
1>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(991,5): warning MSB8012: TargetExt(.dll) 与 Linker 的 OutputFile 属性值(.ax)不匹配。这可能导致项目生成不正确。若要更正此问题,请确保 $(OutDir)、$(TargetName) 和 $(TargetExt) 属性值与 %(Link.OutputFile) 中指定的值匹配。
1>Link:
1>     正在创建库 .\Debug/textout.lib 和对象 .\Debug/textout.exp
1>strmbasd.lib(amvideo.obj) : error LNK2001: 无法解析的外部符号 ___security_cookie
1>strmbasd.lib(winctrl.obj) : error LNK2001: 无法解析的外部符号 ___security_cookie
1>strmbasd.lib(ctlutil.obj) : error LNK2001: 无法解析的外部符号 ___security_cookie
1>strmbasd.lib(wxlist.obj) : error LNK2001: 无法解析的外部符号 ___security_cookie
1>strmbasd.lib(mtype.obj) : error LNK2001: 无法解析的外部符号 ___security_cookie
1>strmbasd.lib(amfilter.obj) : error LNK2019: 无法解析的外部符号 ___security_cookie,该符号在函数 "public: virtual unsigned long __stdcall CBaseFilter::NonDelegatingRelease(void)" (?NonDelegatingRelease@CBaseFilter@@UAGKXZ) 中被引用
1>strmbasd.lib(wxdebug.obj) : error LNK2001: 无法解析的外部符号 ___security_cookie
1>strmbasd.lib(winutil.obj) : error LNK2001: 无法解析的外部符号 ___security_cookie
1>strmbasd.lib(wxutil.obj) : error LNK2001: 无法解析的外部符号 ___security_cookie
1>textout.obj : error LNK2001: 无法解析的外部符号 ___security_cookie
1>strmbasd.lib(dllsetup.obj) : error LNK2001: 无法解析的外部符号 ___security_cookie
1>strmbasd.lib(dllentry.obj) : error LNK2001: 无法解析的外部符号 ___security_cookie
1>strmbasd.lib(renbase.obj) : error LNK2001: 无法解析的外部符号 ___security_cookie
1>strmbasd.lib(wxlist.obj) : error LNK2001: 无法解析的外部符号 ___CxxFrameHandler3
1>strmbasd.lib(winutil.obj) : error LNK2001: 无法解析的外部符号 ___CxxFrameHandler3
1>strmbasd.lib(wxutil.obj) : error LNK2001: 无法解析的外部符号 ___CxxFrameHandler3
1>strmbasd.lib(winctrl.obj) : error LNK2019: 无法解析的外部符号 ___CxxFrameHandler3,该符号在函数 "public: virtual long __stdcall CBaseControlWindow::get_WindowState(long *)" (?get_WindowState@CBaseControlWindow@@UAGJPAJ@Z) 中被引用
1>strmbasd.lib(ctlutil.obj) : error LNK2001: 无法解析的外部符号 ___CxxFrameHandler3
1>textout.obj : error LNK2001: 无法解析的外部符号 ___CxxFrameHandler3
1>strmbasd.lib(renbase.obj) : error LNK2001: 无法解析的外部符号 ___CxxFrameHandler3
1>strmbasd.lib(amfilter.obj) : error LNK2001: 无法解析的外部符号 ___CxxFrameHandler3
1>strmbasd.lib(wxdebug.obj) : error LNK2001: 无法解析的外部符号 ___CxxFrameHandler3
1>strmbasd.lib(amvideo.obj) : error LNK2001: 无法解析的外部符号 @__security_check_cookie@4
1>strmbasd.lib(winctrl.obj) : error LNK2001: 无法解析的外部符号 @__security_check_cookie@4
1>strmbasd.lib(ctlutil.obj) : error LNK2001: 无法解析的外部符号 @__security_check_cookie@4
1>strmbasd.lib(wxlist.obj) : error LNK2001: 无法解析的外部符号 @__security_check_cookie@4
1>strmbasd.lib(mtype.obj) : error LNK2001: 无法解析的外部符号 @__security_check_cookie@4
1>strmbasd.lib(amfilter.obj) : error LNK2019: 无法解析的外部符号 @__security_check_cookie@4,该符号在函数 "public: __thiscall CBaseFilter::CBaseFilter(char const *,struct IUnknown *,class CCritSec *,struct _GUID const &)" (??0CBaseFilter@@QAE@PBDPAUIUnknown@@PAVCCritSec@@ABU_GUID@@@Z) 中被引用
1>strmbasd.lib(wxdebug.obj) : error LNK2001: 无法解析的外部符号 @__security_check_cookie@4
1>strmbasd.lib(winutil.obj) : error LNK2001: 无法解析的外部符号 @__security_check_cookie@4
1>strmbasd.lib(wxutil.obj) : error LNK2001: 无法解析的外部符号 @__security_check_cookie@4
1>textout.obj : error LNK2001: 无法解析的外部符号 @__security_check_cookie@4
1>strmbasd.lib(dllsetup.obj) : error LNK2001: 无法解析的外部符号 @__security_check_cookie@4
1>strmbasd.lib(dllentry.obj) : error LNK2001: 无法解析的外部符号 @__security_check_cookie@4
1>strmbasd.lib(renbase.obj) : error LNK2001: 无法解析的外部符号 @__security_check_cookie@4
1>strmbasd.lib(winctrl.obj) : error LNK2019: 无法解析的外部符号 @_RTC_CheckStackVars@8,该符号在函数 "public: virtual long __stdcall CBaseControlWindow::get_Left(long *)" (?get_Left@CBaseControlWindow@@UAGJPAJ@Z) 中被引用
1>strmbasd.lib(ctlutil.obj) : error LNK2001: 无法解析的外部符号 @_RTC_CheckStackVars@8
1>strmbasd.lib(wxlist.obj) : error LNK2001: 无法解析的外部符号 @_RTC_CheckStackVars@8
1>strmbasd.lib(amvideo.obj) : error LNK2001: 无法解析的外部符号 @_RTC_CheckStackVars@8
1>strmbasd.lib(amfilter.obj) : error LNK2001: 无法解析的外部符号 @_RTC_CheckStackVars@8
1>strmbasd.lib(wxdebug.obj) : error LNK2001: 无法解析的外部符号 @_RTC_CheckStackVars@8
1>strmbasd.lib(winutil.obj) : error LNK2001: 无法解析的外部符号 @_RTC_CheckStackVars@8
1>strmbasd.lib(wxutil.obj) : error LNK2001: 无法解析的外部符号 @_RTC_CheckStackVars@8
1>strmbasd.lib(dllsetup.obj) : error LNK2001: 无法解析的外部符号 @_RTC_CheckStackVars@8
1>strmbasd.lib(dllentry.obj) : error LNK2001: 无法解析的外部符号 @_RTC_CheckStackVars@8
1>strmbasd.lib(renbase.obj) : error LNK2001: 无法解析的外部符号 @_RTC_CheckStackVars@8
1>strmbasd.lib(combase.obj) : error LNK2001: 无法解析的外部符号 @_RTC_CheckStackVars@8
1>strmbasd.lib(amvideo.obj) : error LNK2001: 无法解析的外部符号 __RTC_CheckEsp
1>strmbasd.lib(winctrl.obj) : error LNK2019: 无法解析的外部符号 __RTC_CheckEsp,该符号在函数 "public: virtual long __stdcall CBaseControlWindow::put_Width(long)" (?put_Width@CBaseControlWindow@@UAGJJ@Z) 中被引用
1>strmbasd.lib(ctlutil.obj) : error LNK2001: 无法解析的外部符号 __RTC_CheckEsp
1>strmbasd.lib(wxlist.obj) : error LNK2001: 无法解析的外部符号 __RTC_CheckEsp
1>strmbasd.lib(mtype.obj) : error LNK2001: 无法解析的外部符号 __RTC_CheckEsp
1>strmbasd.lib(amfilter.obj) : error LNK2001: 无法解析的外部符号 __RTC_CheckEsp
1>strmbasd.lib(wxdebug.obj) : error LNK2001: 无法解析的外部符号 __RTC_CheckEsp
1>strmbasd.lib(winutil.obj) : error LNK2001: 无法解析的外部符号 __RTC_CheckEsp
1>strmbasd.lib(wxutil.obj) : error LNK2001: 无法解析的外部符号 __RTC_CheckEsp
1>strmbasd.lib(dllsetup.obj) : error LNK2001: 无法解析的外部符号 __RTC_CheckEsp
1>strmbasd.lib(dllentry.obj) : error LNK2001: 无法解析的外部符号 __RTC_CheckEsp
1>strmbasd.lib(renbase.obj) : error LNK2001: 无法解析的外部符号 __RTC_CheckEsp
1>strmbasd.lib(combase.obj) : error LNK2001: 无法解析的外部符号 __RTC_CheckEsp
1>strmbasd.lib(amvideo.obj) : error LNK2019: 无法解析的外部符号 __RTC_Shutdown,该符号在函数 _GetBitmapSubtype@4 中被引用
1>strmbasd.lib(winctrl.obj) : error LNK2001: 无法解析的外部符号 __RTC_Shutdown
1>strmbasd.lib(ctlutil.obj) : error LNK2001: 无法解析的外部符号 __RTC_Shutdown
1>strmbasd.lib(wxlist.obj) : error LNK2001: 无法解析的外部符号 __RTC_Shutdown
1>strmbasd.lib(mtype.obj) : error LNK2001: 无法解析的外部符号 __RTC_Shutdown
1>strmbasd.lib(amfilter.obj) : error LNK2001: 无法解析的外部符号 __RTC_Shutdown
1>strmbasd.lib(wxdebug.obj) : error LNK2001: 无法解析的外部符号 __RTC_Shutdown
1>strmbasd.lib(winutil.obj) : error LNK2001: 无法解析的外部符号 __RTC_Shutdown
1>strmbasd.lib(wxutil.obj) : error LNK2001: 无法解析的外部符号 __RTC_Shutdown
1>strmbasd.lib(dllsetup.obj) : error LNK2001: 无法解析的外部符号 __RTC_Shutdown
1>strmbasd.lib(dllentry.obj) : error LNK2001: 无法解析的外部符号 __RTC_Shutdown
1>strmbasd.lib(renbase.obj) : error LNK2001: 无法解析的外部符号 __RTC_Shutdown
1>strmbasd.lib(combase.obj) : error LNK2001: 无法解析的外部符号 __RTC_Shutdown
1>strmbasd.lib(amvideo.obj) : error LNK2001: 无法解析的外部符号 __RTC_InitBase
1>strmbasd.lib(winctrl.obj) : error LNK2019: 无法解析的外部符号 __RTC_InitBase,该符号在函数 "public: virtual long __stdcall CBaseControlWindow::get_Width(long *)" (?get_Width@CBaseControlWindow@@UAGJPAJ@Z) 中被引用
1>strmbasd.lib(ctlutil.obj) : error LNK2001: 无法解析的外部符号 __RTC_InitBase
1>strmbasd.lib(wxlist.obj) : error LNK2001: 无法解析的外部符号 __RTC_InitBase
1>strmbasd.lib(mtype.obj) : error LNK2001: 无法解析的外部符号 __RTC_InitBase
1>strmbasd.lib(amfilter.obj) : error LNK2001: 无法解析的外部符号 __RTC_InitBase
1>strmbasd.lib(wxdebug.obj) : error LNK2001: 无法解析的外部符号 __RTC_InitBase
1>strmbasd.lib(winutil.obj) : error LNK2001: 无法解析的外部符号 __RTC_InitBase
1>strmbasd.lib(wxutil.obj) : error LNK2001: 无法解析的外部符号 __RTC_InitBase
1>strmbasd.lib(dllsetup.obj) : error LNK2001: 无法解析的外部符号 __RTC_InitBase
1>strmbasd.lib(dllentry.obj) : error LNK2001: 无法解析的外部符号 __RTC_InitBase
1>strmbasd.lib(renbase.obj) : error LNK2001: 无法解析的外部符号 __RTC_InitBase
1>strmbasd.lib(combase.obj) : error LNK2001: 无法解析的外部符号 __RTC_InitBase
1>strmbasd.lib(wxutil.obj) : error LNK2019: 无法解析的外部符号 __RTC_UninitUse,该符号在函数 "public: int __thiscall CAMMsgEvent::WaitMsg(unsigned long)" (?WaitMsg@CAMMsgEvent@@QAEHK@Z) 中被引用
1>strmbasd.lib(ctlutil.obj) : error LNK2019: 无法解析的外部符号 __ftol2,该符号在函数 "public: class COARefTime & __thiscall COARefTime::operator=(double const &)" (??4COARefTime@@QAEAAV0@ABN@Z) 中被引用
1>Debug\textout.ax : fatal error LNK1120: 9 个无法解析的外部命令
1>
1>生成失败。
1>
1>已用时间 00:00:00.64
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

解决方案 »

  1.   

    @happyparrot @jiangsheng @VisualEleven @tiger9991 @fandh
      

  2.   

    用VC6编译DXSDK9.0B完全没问题,谁能帮帮忙解释下为什么2010就不行呢
      

  3.   

    现在有dxsdk9.0b可在vc6下用
    那如果我想在vs2010下搞directshow,该用哪个版本呢?
    windows sdk 7.0?
      

  4.   

    direct show  应该是很古老的 我记得 The last version of the DirectX SDK to include DirectShow was DirectX 9.0 SDK Update - (February 2005) Extras. After this version, DirectShow was moved to the Windows SDK. 2005以后就被移除了