2 waohitao waohitao 于 2012.10.24 11:19 提问

VS2003升级编译错误LNK1179错误: 重复的 COMDAT“_IID_IDispatchEx"

原来的代码在2003下可正常编译,但是由于其他代码都是2010的,为统一调整必须将2003项目升级到2010,问题也就跟着来了,编译无法通过,提示如下出错信息:
1、error LNK1179: 无效或损坏的文件: 重复的 COMDAT“_IID_IDispatchEx”
2、_IID_IDispatchEx重复初始化,文件dispeX.h(121)

通过查找发现dispeX.h是个库文件,位于MicrosoftSDKs\Windows\v7.0A\Include\下
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,编译时仍然报同样的错误

我彻底搞晕了,不知道应当怎么处理,请求各位高手帮看一下,谢谢!!

3个回答

love_loveec
love_loveec   2012.10.24 13:32

说实话,应该是没什么好办法,工程代码多不,最好的办法是用VS2010重新写一遍

wangyaninglm
wangyaninglm   Ds   Rxr 2015.01.01 14:04

这个估计是,要用调剂编译什么的加以限制吧。

xy707707
xy707707   2015.05.21 16:02

最好将问题部分,重构一下,,,,,

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!