【问题标题】:Linker Errors due to being Already Defined由于已经定义的链接器错误
【发布时间】:2011-07-22 09:44:36
【问题描述】:

自从我编写任何使用 LibCurl 的 .dll 插件以来已经有大约一年了,但我决定今晚再开始一个。不幸的是,我已经与相同的链接器错误作斗争了将近 4 个小时,我完全迷失了。

我正在静态构建 LibCurl,它在大多数情况下看起来都很好,除了我收到以下链接器错误。

1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _calloc already defined in memoverride.obj
1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _realloc already defined in memoverride.obj
1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _free already defined in memoverride.obj
1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _malloc already defined in memoverride.obj
1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: __strdup already defined in memoverride.obj
1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: __malloc_crt already defined in memoverride.obj

我试过了……

1) 由于 MSDN 说 LNK2005 是由此引起的,因此正在重新组织我包含的库。

2) 通过 MSVC 应用程序重建 LibCurl 库,然后通过命令行工具。

3) 排除引起问题的库。

还有一堆我现在想不起来的东西。谁能帮我提供一些关于如何解决这些问题的信息?

【问题讨论】:

  • memoverride.cpp 是你的文件吗?
  • 是的。实际上,经过这么长时间,问题似乎是我的项目是 /MT 而 libcurl .lib 是 /MD。将我的项目更改为 /MD 或将 libcurl 更改为 /MT 虽然似乎会出现错误。
  • 当然,经过这么长时间,我再次阅读了FAQ和MSDN并立即修复了它。

标签: c++ libcurl linker-errors msvcrt


【解决方案1】:

问题是我的 .dll 是 /MT 而 libcurl 是 /MD。另外,我最初阻止了“libcmt”,所以当我将 libcurl 切换到 /MT 时,它会出现错误。

【讨论】:

    猜你喜欢
    • 2013-10-09
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 2016-03-09
    • 2021-05-01
    • 1970-01-01
    相关资源
    最近更新 更多