首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接到多线程调试DLL库时的链接错误

链接到多线程调试DLL库时的链接错误
EN

Stack Overflow用户
提问于 2013-05-16 12:06:14
回答 1查看 4.8K关注 0票数 1

我试图将一个空项目与PoDoFo库(.lib)链接起来,该库是使用VS项目构建的,该项目具有多线程调试DLL (/MDd)集。当我试图在另一个项目中链接到这个库时,不管我在这个中使用了什么代码生成选项,我都可以得到以下内容:

代码语言:javascript
复制
1>Linking...
1>libcmtd.lib(dbgheap.obj) : error LNK2005: __heap_alloc already defined in LIBCMT.lib(malloc.obj)
1>libcmtd.lib(dbgheap.obj) : error LNK2005: __recalloc already defined in LIBCMT.lib(recalloc.obj)
1>libcmtd.lib(dbgheap.obj) : error LNK2005: __msize already defined in LIBCMT.lib(msize.obj)
1>libcmtd.lib(malloc.obj) : error LNK2005: _V6_HeapAlloc already defined in LIBCMT.lib(malloc.obj)
1>libcmtd.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook already defined in LIBCMT.lib(dbghook.obj)
1>libcmtd.lib(sbheap.obj) : error LNK2005: __get_sbh_threshold already defined in LIBCMT.lib(sbheap.obj)
1>libcmtd.lib(sbheap.obj) : error LNK2005: __set_sbh_threshold already defined in LIBCMT.lib(sbheap.obj)
1>libcmtd.lib(sbheap.obj) : error LNK2005: __set_amblksiz already defined in LIBCMT.lib(sbheap.obj)
1>libcmtd.lib(sbheap.obj) : error LNK2005: __get_amblksiz already defined in LIBCMT.lib(sbheap.obj)
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_heap_init already defined in LIBCMT.lib(sbheap.obj)
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_find_block already defined in LIBCMT.lib(sbheap.obj)
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_free_block already defined in LIBCMT.lib(sbheap.obj)
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_block already defined in LIBCMT.lib(sbheap.obj)
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_new_region already defined in LIBCMT.lib(sbheap.obj)
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_new_group already defined in LIBCMT.lib(sbheap.obj)
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_resize_block already defined in LIBCMT.lib(sbheap.obj)
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_heapmin already defined in LIBCMT.lib(sbheap.obj)
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_heap_check already defined in LIBCMT.lib(sbheap.obj)
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_pHeaderDefer already defined in LIBCMT.lib(sbheap.obj)
1>libcmtd.lib(isctype.obj) : error LNK2005: __isctype_l already defined in LIBCMT.lib(isctype.obj)
1>libcmtd.lib(isctype.obj) : error LNK2005: __isctype already defined in LIBCMT.lib(isctype.obj)
1>msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in LIBCMT.lib(typinfo.obj)
1>msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in LIBCMT.lib(typinfo.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: __invalid_parameter already defined in LIBCMT.lib(invarg.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: __CrtDbgReportW already defined in libcmtd.lib(dbgrptw.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: "public: virtual __thiscall std::exception::~exception(void)" (??1exception@std@@UAE@XZ) already defined in LIBCMT.lib(stdexcpt.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: "public: __thiscall std::exception::exception(void)" (??0exception@std@@QAE@XZ) already defined in LIBCMT.lib(stdexcpt.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: "public: __thiscall std::exception::exception(class std::exception const &)" (??0exception@std@@QAE@ABV01@@Z) already defined in LIBCMT.lib(stdexcpt.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: "public: __thiscall std::exception::exception(char const * const &)" (??0exception@std@@QAE@ABQBD@Z) already defined in LIBCMT.lib(stdexcpt.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: ___iob_func already defined in libcmtd.lib(_file.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _free already defined in LIBCMT.lib(free.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _malloc already defined in LIBCMT.lib(malloc.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _realloc already defined in LIBCMT.lib(realloc.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _wcstombs already defined in libcmtd.lib(wcstombs.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _wcslen already defined in LIBCMT.lib(wcslen.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _strtol already defined in LIBCMT.lib(strtol.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _isdigit already defined in LIBCMT.lib(_ctype.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _strncmp already defined in LIBCMT.lib(strncmp.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _fopen already defined in libcmtd.lib(fopen.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _fclose already defined in libcmtd.lib(fclose.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _fread already defined in libcmtd.lib(fread.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _fseek already defined in libcmtd.lib(fseek.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _ftell already defined in libcmtd.lib(ftell.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: __vscprintf already defined in libcmtd.lib(vsprintf.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _fflush already defined in libcmtd.lib(fflush.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: __strnicmp already defined in LIBCMT.lib(strnicmp.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _sprintf already defined in libcmtd.lib(sprintf.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _memmove already defined in LIBCMT.lib(memmove.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _strftime already defined in LIBCMT.lib(strftime.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: ___timezone already defined in LIBCMT.lib(timeset.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: __tzset already defined in LIBCMT.lib(tzset.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _exit already defined in LIBCMT.lib(crt0dat.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _isspace already defined in LIBCMT.lib(_ctype.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _getenv already defined in LIBCMT.lib(getenv.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: __stricmp already defined in LIBCMT.lib(stricmp.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _isxdigit already defined in LIBCMT.lib(_ctype.obj)
1>msvcrtd.lib(MSVCR90D.dll) : error LNK2005: _strstr already defined in libcmtd.lib(strstr.obj)
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: __thiscall std::allocator<char>::allocator<char>(void)" (??0?$allocator@D@std@@QAE@XZ) already defined in TestPoDoFo.obj
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: __thiscall std::allocator<char>::allocator<char>(class std::allocator<char> const &)" (??0?$allocator@D@std@@QAE@ABV01@@Z) already defined in TestPoDoFo.obj

如果有什么用的话,我也发了这篇文章:

代码语言:javascript
复制
/Od /I "..\Podofo.Include\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /MTd /Yu"stdafx.h" /Fp"Debug\TestPoDoFo.pch" /Fo"Debug\\" /Fd"Debug\vc90.pdb" /W3 /nologo /c /ZI /TP /errorReport:prompt

与.lib链接的测试项目(.lib)不也应该是多线程调试DLL (/MDd)吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-16 12:35:45

一般来说,所有项目都应该使用多线程调试DLL (/MDd)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16586981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档