0

我有一个在 VC6 中编译良好的 ATL COM 项目,在 VS2008 中编译时会出现以下链接器错误。

错误 LNK2005:“void * __cdecl operator new(unsigned int)”(??2@YAPAXI@Z) 已在 libcmt.lib(new.obj) 文件中定义:uafxcw.lib

对于和delete,还有另外三个类似的错误。new[]delete[]

我在网上查了几篇文章,其中大多数都说它是 CRT 和 MFC dll 之间的冲突。(它们被拾取的顺序)。一篇文章建议将冲突的库添加到项目设置中的忽略库列表中。

这样做,我只剩下一个错误:

错误 LNK2001:无法解析的外部符号 __afxForceEXCLUDE 文件:LMAN.Lib

错误指向该项目引用的库(我们开发的库)。

有想法该怎么解决这个吗?我相信这对于迁移到 VS 2008 的人来说是一个常见的问题。

4

1 回答 1

1

解决了。

不需要排除 uafxcw.lib。只需确保未使用 MFC dll。我们的 lib LMAN.lib 使用的是 Afxdisp.h(一个 MFC dll),这不是必需的。我从该项目中删除了包含,然后瞧!- 构建成功。

于 2009-06-23T10:07:18.820 回答