VC6配置Directshow时的strmif.h出现的C2146错误

来源:互联网 发布:生物多样性锐减数据 编辑:程序博客网 时间:2024/05/05 23:02

在给VC6配置Directshow SDK时,很多人会出现C2146和fetal error C1004问题,作为对CSDN和各位大虾的回报,特写此文,以飨读者!

症状:/include/strmif.h(1022) : error C2146: syntax error : missing ';' before identifier 'HSEMAPHORE' 

出现此问题,主要是strmif.h定义不完善,有以下解决办法:

a方法:在VC的菜单Tools | Options | Directories| 的include中,把D:/Microsoft Visual Studio/VC98/INCLUDE,就是VC自带的include放置于DXSDK的include之前。

b方法:修改DXSDK中的头文件。在strmif.h中找到typedef DWORD_PTR HSEMAPHORE; 在其上一行加入如下两条语句 typedef unsigned long LONG_PTR;  typedef unsigned long DWORD_PTR; 然后找出DXSDK中的control.h,定位到typedef LONG_PTR OAEVENT;在其上一行加入typedef unsigned long LONG_PTR;,保存修改,然后重新编译,rebuild all,就可以了!

两种方法都可以,用一种就行了。

欢迎交流!

原创粉丝点击