最近在做一个Web网页中内嵌Activex视频播放的插件的项目时,遇到一个错误,搞了足足半天,终于可以了。写到博客已做记录,也希望对其他朋友有所帮助。
问题描述:
在 stdafx.h文件中增加如下行:
#import "C:\Windows\SysWOW64\Macromed\Flash\Flash32_20_0_0_286.ocx" \
no_namespace raw_interfaces_only raw_native_types \
named_guids exclude("IServiceProvider")
注册Flash控件等操作后,编译运行出现如下错误:
错误 4 error C2011: “IDispatchEx”:“struct”类型重定义 e:\project\softwareapp\kosp\activex\activex_flash\activex\debug
\flash32_20_0_0_286.tlh 304 1 Activex
错误 5 error C2504: “IDispatchEx”: 未定义基类 e:\project\softwareapp\kosp\activex\activex_flash\activex\debug
\flash32_20_0_0_286.tlh 347 1 Activex
错误 6 error C2504: “IDispatchEx”: 未定义基类 e:\project\softwareapp\kosp\activex\activex_flash\activex\debug
\flash32_20_0_0_286.tlh 355 1 Activex
解决措施:
在新增的import语句尾部增加:rename("IDispatchEx","IMyDispatchEx"),为什么这样设置后就好了,我也不太清楚。希望有懂得告诉我。
更改后新增行如下:
#import "C:\Windows\SysWOW64\Macromed\Flash\Flash32_20_0_0_286.ocx" \
no_namespace raw_interfaces_only raw_native_types \
named_guids exclude("IServiceProvider") \
rename("IDispatchEx","IMyDispatchEx")