问题描述
- VS2003升级编译错误LNK1179错误: 重复的 COMDAT“_IID_IDispatchEx"
-
原来的代码在2003下可正常编译,但是由于其他代码都是2010的,为统一调整必须将2003项目升级到2010,问题也就跟着来了,编译无法通过,提示如下出错信息:
1、error LNK1179: 无效或损坏的文件: 重复的 COMDAT“_IID_IDispatchEx”
2、_IID_IDispatchEx重复初始化,文件dispeX.h(121)通过查找发现dispeX.h是个库文件,位于MicrosoftSDKsWindowsv7.0AInclude下
121行代码:DEFINE_GUID(IID_IDispatchEx, 0xa6ef9860, 0xc720, 0x11d0, 0x93, 0x37, 0x0, 0xa0, 0xc9, 0xd, 0xca, 0xa9);网上查了一下,MSDN关于LNK1179的解释是http://msdn.microsoft.com/zh-tw/library/cddbs9aw.aspx 包含了兩個或多個具有相同名稱的 COMDAT,使用了限制外部名稱 (External Name) 長度的 /H,和在 COMDAT 中封裝函式的 /Gy,可能會產生這項錯誤。
可是实际调试过程,并没有在使用/H,(属性— C++ — 命令行下查看)
并且也禁用过/Gy,编译时仍然报同样的错误我彻底搞晕了,不知道应当怎么处理,请求各位高手帮看一下,谢谢!!
解决方案
说实话,应该是没什么好办法,工程代码多不,最好的办法是用VS2010重新写一遍
解决方案二:
这个估计是,要用调剂编译什么的加以限制吧。
解决方案三:
最好将问题部分,重构一下,,,,,
时间: 2024-09-17 03:40:25