【问题标题】:How to resolve the following linker errors in Visual Studio?如何解决 Visual Studio 中的以下链接器错误?
【发布时间】:2009-05-29 11:24:06
【问题描述】:

这是我的场景。我有一个包含 30 个子项目的项目。在其中一个项目中,我使用了 CLR(公共语言运行时),因此我使用 /mdd(多线程调试 DLL)修改了它的运行时。

每个项目都成功构建。但是当我尝试编译主要 项目我收到以下链接器错误:

LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library


LIBCMTD.lib(winxfltr.obj) : error LNK2005: __XcptFilter already defined in MSVCRTD.lib(MSVCR80D.dll)
LIBCMTD.lib(invarg.obj) : error LNK2005: __invalid_parameter already defined in MSVCRTD.lib(MSVCR80D.dll)
LIBCMTD.lib(invarg.obj) : error LNK2005: __invoke_watson already defined in MSVCRTD.lib(MSVCR80D.dll)
LIBCMTD.lib(crt0.obj) : error LNK2005: _mainCRTStartup already defined in MSVCRTD.lib(crtexe.obj)
LIBCMTD.lib(fclose.obj) : error LNK2005: _fclose already defined in MSVCRTD.lib(MSVCR80D.dll)
LIBCMTD.lib(printf.obj) : error LNK2005: _printf already defined in MSVCRTD.lib(MSVCR80D.dll)
LIBCMTD.lib(mbstowcs.obj) : error LNK2005: _mbstowcs already defined in MSVCRTD.lib(MSVCR80D.dll)
LIBCMTD.lib(dbgrptw.obj) : error LNK2005: __CrtDbgReportW already defined in MSVCRTD.lib(MSVCR80D.dll)
LIBCMTD.lib(wcstombs.obj) : error LNK2005: _wcstombs already defined in MSVCRTD.lib(MSVCR80D.dll)
LIBCMTD.lib(tzset.obj) : error LNK2005: __tzset already defined in MSVCRTD.lib(MSVCR80D.dll)
LIBCMTD.lib(stricmp.obj) : error LNK2005: __stricmp already defined in MSVCRTD.lib(MSVCR80D.dll)

如何解决这些问题?

【问题讨论】:

    标签: visual-studio visual-studio-2008 clr


    【解决方案1】:

    LIBCMTD 是静态多线程 C 运行时库的调试版本。 MSVCR80D 是基于 DLL 的多线程 C 运行时库的调试版本。你的一些子项目需要一个,一些另一个。这是微软的混乱,但你必须处理它。选择一个,比如说,多线程调试 DLL,并将其专门用于项目的调试版本和所有子项目。 Microsoft 许可证(有人告诉我)要求您对已发布的软件使用非调试版本。

    有关详细信息,请参阅以下内容:CLICK.

    【讨论】:

    • 附言。当您将所有内容转换为单一版本的 C 运行时 (CRT) 时,请分别对每个项目执行“清理”和“重建”项目。
    【解决方案2】:

    您的某些项目似乎使用静态运行时库。 (并且您为您的一个项目选择了动态) 不支持这种组合。

    让我想起:Linker errors between multiple projects in Visual C++

    【讨论】:

      猜你喜欢
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-28
      • 1970-01-01
      • 2018-03-09
      • 2018-11-16
      相关资源
      最近更新 更多