在给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,就可以了!
两种方法都可以,用一种就行了。
欢迎交流!