【发布时间】: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