error C4772: #import referenced a type from a missing type library; '__missing_type__'

“关于__missing_type__ error”

1.error C4772: #import referenced a type from a missing type library; '__missing_type__' used as a placeholdererror                                         
2.C2516: '__missing_type__' : is not a legal base class      
3.error C2146: syntax error : missing ',' before identifier  'Adjustments'

Error如山1,2,3点,源代码从前辈那里拷来的,但是在他电脑上没有问题,在我电脑上就出现了这个奇怪的问题,自己搞了差不多一周,还是未能解决, 最后请教了下前辈总算解决了,这里做个记录,以免忘记,再遇到又不会了。这个问题主要来源于代码中使用了#import “excel.exe”。然后找了好多资料,却还是不是根本解决之法,仍然报错。

本人电脑上当前使用的是Office 2010,但是之前有安装过WPS,Office 2007版。网上有说是版本问题,所以我卸载了Office2010重新安装,或是卸载了安装2007版,也未能解决;弄了挺久,没办法了,请教了前辈,他看了半个小时不到,告诉我问题所在。尴尬!~ ~ ~ 是由于电脑安装了多个版本的Office,或是安装了WPS,在安装时,系统会增加一个注册表项,就算你卸载了之后,这个注册表项依然存在(360不知道能不能清除干净,这个没试过)。

程序导入excel.exe等相关库的时候,会去注册表项查找,然后找到对应的软件安装路径下找到对应的库。但是存在多个注册表项,可能造成查找混乱,找到的是已卸载了版本的注册表,所以就找不到需要的库文件,报这样的错误。(具体过程不清楚,感觉是这个流程,嘿嘿!)

解决方法:

最好只留一个Office 版本或是WPS,但是卸载之后要去删除对应的注册表项。
Win + R运行命令:regedit ; 在弹出的注册表编辑器中找到如下选项:
HKEY_CLASSES_ROOT\TypeLib{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}\2.5
右边会显示选择的项的信息,右键 --> 删除多余的即可。
我的是2.5,具体得视情况而定,可以看下留下来的版本的注册表项是多少,删除多余的就可以了。


由于找到的那个参考资料的链接不见了,所以自己记录一下,以免下次遇到又忘了怎么弄了。
感谢那位博主提供的参考方式,使我得以解决该问题。

你可能感兴趣的:(Error日志)