【问题标题】:StaticCRT(LIBCMT(D)) and DynamicCRT(MSVCRT(D)) conflictStaticCRT(LIBCMT(D)) 和 DynamicCRT(MSVCRT(D)) 冲突
【发布时间】:2010-02-05 05:14:03
【问题描述】:

我正在开发一个使用第三方 dll 和库的项目。我想使用静态 CRT (LIBCMTD) 构建我的项目,因为我希望在“IBM purifier”中运行我的应用程序。但是,第三方库是使用动态 CRT(MSVCRT) 构建的。

这给出了链接错误: 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) 中定义

我尝试了各种链接器设置。我还给链接器命令行提供了 /FORCE:MULTIPLE 以忽略多个定义并创建一个构建。它这样做了,但我的应用程序仍然无法在净化器中运行。

有没有一种好方法可以实现我想要实现的目标?我无法控制第 3 方源代码来控制他们的设置。

谢谢

【问题讨论】:

    标签: visual-studio-2005 linker msvcrt crt libcmtd


    【解决方案1】:

    如果只需要使用静态库来构建它,那么您可能会感到困惑——他们的 DLL 已经配置为动态链接到标准库,并且您在构建项目的其余部分时所做的任何事情都不会改变那个(除非你可以让那个供应商提供一个静态链接到标准库的版本)。

    【讨论】:

      猜你喜欢
      • 2021-10-18
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 2013-05-09
      • 2011-02-14
      相关资源
      最近更新 更多