我有一个在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之间的冲突。 (拾取它们的顺序)。一篇文章建议将冲突的lib添加到项目设置中的ignore lib列表中。

这样做,我留下了一个错误:

  

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

错误指向此项目引用的lib(由我们开发的lib)。

有关如何解决此问题的任何想法?我相信这对于迁移到VS 2008的人来说是个常见问题。

有帮助吗?

解决方案

解决了它。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top