【问题标题】:How to build MTd projects which use MDd dlls in VS2005如何在 VS2005 中构建使用 MDd dll 的 MTd 项目
【发布时间】:2010-01-28 11:41:40
【问题描述】:

我正在 Visual Studio 2005 中构建我的应用程序,使用项目属性 ->c/c++->CodeGeneration->RuntimeLib: MTd(使用静态 CRT 库-LIBCMTD)。该应用程序正在使用 MDd 中内置的第 3 方 dll 和库(使用动态 CRT lib-MSVCRTD)。

我收到的链接器错误如下: MSVCRTD.lib(MSVCR80D.dll) : 错误 LNK2005: __mktime64 已在 LIBCMTD.lib(mktime64.obj) 中定义 MSVCRTD.lib(MSVCR80D.dll) : 错误 LNK2005: __gmtime64 已在 LIBCMTD.lib(gmtime64.obj) 中定义 MSVCRTD.lib(MSVCR80D.dll) : 错误 LNK2005: __localtime64 已在 LIBCMTD.lib(loctim64.obj) 中定义

我无法更改第 3 方设置。如果我动态使用 CRT 库,我的应用程序运行良好,但我无法更改。

谢谢

【问题讨论】:

    标签: linker msvcrt static-linking crt


    【解决方案1】:

    有一个开关可以强制链接器忽略多个定义: http://msdn.microsoft.com/en-us/library/70abkas3.aspx

    【讨论】:

    • 除此之外还有其他解决方案吗?不知何故,我觉得设置它是不安全的。谢谢
    • 可能是……但这是我知道的唯一一个。如果你这样做,最好在构建发布版本之前不使用此开关进行构建,以检查除了 CRT 库的定义之外是否还有其他(可能不需要的)多个定义
    • 这非常有价值!我已经和它抗争了将近一个星期,但我不知道这个开关。谢谢! (是的,我知道这可能是一个快速破解,但这就是我想要的)
    【解决方案2】:

    /NODEFAULTLIB 开关也可以提供帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-17
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 2014-10-07
      • 2010-09-28
      相关资源
      最近更新 更多