我有一个程序,原来是Direct 8.X中的DirectShow做的,,,
现在改为用Direct 9.0做,可是调试的时候老是错.
错得还很怪,只有在debug中错,面release中却能通过!!!!
release build的程序也一样用..而debug怎么也过不了...老是这样的错:
Linking...
asyncio.obj : error LNK2001: unresolved external symbol "int __stdcall CritCheckIn(class CCritSec *)" (?CritCheckIn@@YGHPAVCCritSec@@@Z)
asyncrdr.obj : error LNK2001: unresolved external symbol "public: virtual unsigned long __stdcall CBaseFilter::NonDelegatingRelease(void)" (?NonDelegatingRelease@CBaseFilter@@UAGKXZ)
..\Builds\Debug\MediaClient.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.MediaClient.exe - 3 error(s), 0 warning(s)请问各位如何解决是好啊????
!!!!!

解决方案 »

  1.   

    我觉得可以用depends查查看,debug连接的库中是不是没有这两个倒出的函数
    再看看相关的说明和资料
      

  2.   

    单独构建asyncio.obj和asyncrdr.obj并没有错啊...
    就是linking 的时候才错啊!!!
      

  3.   

    Direct 8、Direct 9和Direct 7里面的函数有些不是向下兼容的,在DirectX库修改了以后需要注意里面函数接口的变化,具体你可以查一下MSDN。
      

  4.   

    是不是函数名称变了,看看微软的DirectX文档。
      

  5.   

    检查一下int __stdcall CritCheckIn(),
    unsigned long __stdcall CBaseFilter::NonDelegatingRelease(void)
    这两个函数需要的头文件和连接库。