由于已经定义的链接器错误

时间:2011-07-22 09:44:36

标签: c++ libcurl linker-errors msvcrt

自从我编写任何使用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)重新组织我的包含的libs,因为MSDN说LNK2005是由此引起的。

2)通过MSVC Application重建LibCurl lib,然后通过命令行工具重建。

3)排除导致问题的库。

以及其他一些我现在甚至都记不住的事情。任何人都可以帮我解决一些关于如何解决这些问题的信息吗?

1 个答案:

答案 0 :(得分:2)

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