【Directshow学习日记】(一)BaseClasses 编译的错误

来源:互联网 发布:软件license 限时机制 编辑:程序博客网 时间:2024/05/21 12:49


  •  errorC4430: missing type specifier - int assumed. Note: C++ does not supportdefault-int        c:\Program Files\MicrosoftDirectX SDK (June2010)\Extras\DirectShow\Samples\C++\DirectShow\BaseClasses\ctlutil.h        278
  • 最后看代码错误发生在:operator=(LONG);
  • 函数定义中,这是因为在VC6中,如果没有显示的指定返回值类型,编译器将其视为默认整 形;但是vs2008不支持默认整形,解决这个问题不能修改每个没有显示指示返回值类型的函数地方,可以用wd4430来解决;具体的在工程选项中的c++/Command Line中添加/wd4430即可。

 

  • 再编译:发现在很多for循环的地方有error,这是C++标准语法的问题,因为在之前在for循环内定义的变量可以在for之外的地方使用,即在第一个for里for(inti,...),以后的for再使用i不必再声明,解决方法也很简单,打开project->BaseClassesproperties->configuration->C/C++->Language->Force Comformance inFor Loop Scrope设置为No即可

  • 再编译(使用UNICODE字符集),OK了。生成strmbasd.lib文件。

  • 注明:开发其他Directshow程序需要strmbasd.lib时,当Debug时,需要debug生成的strmbasd.lib的文件才行。