Direct Show 应用程序某个编译错误的解决办法
2009-08-03 13:05
267 查看
新近编程要vc9 (Visual Studio 2008)用到usb摄像头,在编译direct show基础库的时候,遇到如下的错误提示:
:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/include/winnt.h(222) : error C2146: syntax error : missing ';' before identifier 'PVOID64'
C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/include/winnt.h(222) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/include/winnt.h(5940) : error C2146: syntax error : missing ';' before identifier 'Buffer'
C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/include/winnt.h(5940) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/include/winnt.h(5940) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
其中C4430好解决,这只是vc6向vc9移植时的一般问题。比较难办的是c2146.
有一种办法是说调整编译器配置选项中的头文件顺序,如
Before I have (he don't works)
C:/DXSDK/Include
$(VCInstallDir)include
$(VCInstallDir)atlmfc/include
$(VCInstallDir)PlatformSDK/include
$(FrameworkSDKDir)include
Now i solve the problem with the order of directx SDK
$(VCInstallDir)include
$(VCInstallDir)atlmfc/include
$(VCInstallDir)PlatformSDK/include
$(FrameworkSDKDir)include
C:/DXSDK/Include
good luck
但上面的办法在某些项目中解决不了,比如dshow自动的示例。下面给出产生这个问题的原因和解决办法。
原因:
DirectX Include目录下面包含了一个叫BaseTsd.h的过期的头文件,它并没有定义类型 ,我们可以命名用Platform SDK的头文件来代替它。
解决办法:
非常简单,把 DirectX Include中的BaseTsd.h删除即可。这样做的优点是,不用再来回调整头文件的顺序了。
:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/include/winnt.h(222) : error C2146: syntax error : missing ';' before identifier 'PVOID64'
C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/include/winnt.h(222) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/include/winnt.h(5940) : error C2146: syntax error : missing ';' before identifier 'Buffer'
C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/include/winnt.h(5940) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/include/winnt.h(5940) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
其中C4430好解决,这只是vc6向vc9移植时的一般问题。比较难办的是c2146.
有一种办法是说调整编译器配置选项中的头文件顺序,如
Before I have (he don't works)
C:/DXSDK/Include
$(VCInstallDir)include
$(VCInstallDir)atlmfc/include
$(VCInstallDir)PlatformSDK/include
$(FrameworkSDKDir)include
Now i solve the problem with the order of directx SDK
$(VCInstallDir)include
$(VCInstallDir)atlmfc/include
$(VCInstallDir)PlatformSDK/include
$(FrameworkSDKDir)include
C:/DXSDK/Include
good luck
但上面的办法在某些项目中解决不了,比如dshow自动的示例。下面给出产生这个问题的原因和解决办法。
原因:
DirectX Include目录下面包含了一个叫BaseTsd.h的过期的头文件,它并没有定义类型 ,我们可以命名用Platform SDK的头文件来代替它。
解决办法:
非常简单,把 DirectX Include中的BaseTsd.h删除即可。这样做的优点是,不用再来回调整头文件的顺序了。
相关文章推荐
- Direct Show 应用程序某个编译错误的解决办法
- vc++中的编译链接错误error link2001 unresolved external symbol _main解决办法
- 安装QT4.7.4编译版本错误解决办法
- IE8 SysFader:IEXPLORE.EXE应用程序错误解决办法
- cocos2d-x-2.2中编译cocos2d-win32.vc2010 C1083 pthread.h No such file or director错误的解决办法
- 开源的项目xlistctrl编译时出现错误:“找不到uxtheme.h文件”的解决办法
- java代码在编译时出现错误: 编码GBK的不可映射字符 的解决办法
- MTK8127源码编译出现的错误及相关解决办法
- UBUNTU下QT开发应用程序常见错误及其解决办法
- VS2010出现FileTracker : error FTK1011编译错误的解决办法
- 编译PHP时的错误提示及解决办法
- 打开“添加或删除程序”弹出 rundll32.exe-应用程序错误 “0x00310030” 解决办法
- android 开发 @override 编译错误 解决办法
- 编译ncurses错误处理及解决办法
- linux(centos5.5)下编译php时的一些典型错误及解决办法。
- 编译时出现fatal error C1853: "debug/xxx.pch" is not a precomplied header file with......错误的原因及解决办法(转)
- 卸载VS2010后Sql Server 2005 不能启动SqlWb.exe 应用程序错误的解决办法。
- wince整体解决方案编译错误的解决办法(StdAfx.obj' not allowed with multiple source files )
- 在Linux下安装PHP过程中,编译时出现configure: error: libjpeg.(a|so) not found 错误的解决办法