似乎无法忽略 Visual Studio 2010 中的库

Posted

技术标签:

【中文标题】似乎无法忽略 Visual Studio 2010 中的库【英文标题】:Can't seem to ignore library in Visual Studio 2010 【发布时间】:2012-06-26 18:59:16 【问题描述】:

我正在将一个项目从 VS2008 更新到 VS2010,但出现此错误:

uafxcwd.lib(afxwinappex.obj):错误 LNK2005:“公共:虚拟结构 CRuntimeClass * __thiscall CWinAppEx::GetRuntimeClass(void)const " (?GetRuntimeClass@CWinAppEx@@UBEPAUCRuntimeClass@@XZ) 已经定义 在 WinAppEx.obj 中

我已经尝试了我能想到的一切。 uafxcwd.lib 位于链接器的“附加依赖项”和“忽略特定默认库”设置中。由于某种原因,它似乎没有忽略 uafxcwd.lib 库。

任何帮助将不胜感激。

【问题讨论】:

听起来很明显,但是您是否尝试过清理您的解决方案并重新构建它? 是的。这通常可以解决这些奇怪的问题,但这次不是。 你试过了吗,检查链接顺序:support.microsoft.com/default.aspx?scid=kb;en-us;q148652 是的,我的订单是唯一不会导致数百个错误的订单。另外,WinAppEx.obj 不是来自库,所以我不能用它订购 uafxcwd.lib。 如果你把这个 .lib 放在“附加依赖项”中,那么它就不会被忽略。您正在使用不兼容的设置编译源代码,使它们都相同。 【参考方案1】:

我很久以前就遇到过这个问题,我找到了一个设置正确并且编译没有错误的项目。我也做了一些笔记,但我不记得我是如何(在哪里)得到解决方案的。

这里是:

您在 MFC 项目中使用 C 运行时库,并且库的链接顺序错误。 CRT 和 MFC 库包含 CRT 使用弱外部链接的 new、delete 和 DLLMain。 MFC 库中的所有函数都必须在 CRT 之前链接。

为了实现这一点,请执行以下操作:

在项目设置中,链接,输入,进入忽略库,添加Libcmtd.lib。这将从链接过程中排除 Libcmtd.lib。

既然你需要它,它就必须包括在内。您可以通过在 Additional Dependencies 框中添加库来强制它。但按以下顺序添加库:uafxcw.lib LIBCMT.lib。

正如你所见,uafxcw.lib 是 BEFORE LIBCMT.lib。这应该可以解决您的问题。

【讨论】:

我已经尝试过了,但它不起作用。冲突不在这两个库之间,而是在 uafxcwd.lib 和生成的 obj 文件之间。【参考方案2】:

修复它。问题是 VS2010 中的 uafxcwd.lib 引入了一个新的类 cwinappex。这与我创建的类同名,导致冲突。

谁会想到它?

【讨论】:

以上是关于似乎无法忽略 Visual Studio 2010 中的库的主要内容,如果未能解决你的问题,请参考以下文章

visual studio 2010 怎么 #include<iostream> 给画出波浪线说无法打开啊

Visual Studio .NET 2003 - 忽略 libcmt 与 libcmtd 的特定库

如何忽略 '$' 未定义 JsHint 错误。 (Visual Studio 2010 JsHint 扩展)

Visual Studio 2010 Ultimate 无法连接到 MySql

我似乎无法将记录添加到 Visual Studio 中的数据库

无法在Visual Studio 2010 + Resharper中键入某些方括号