Linker error msvcprtd.lib(msvcp100d.dll) error lnk2005 already defined libcpmtd.
От: SteeLHeaD  
Дата: 06.03.13 14:10
Оценка:
Господа,
забрал из VSS солюшен (из 5 проектов) для VS2010 и стал его собирать.
Увлекательный квест "собери меня" через неделю (с изменеием 32-64bit, дебага-недебага, и.т.п у самого проекта и требуемых внешних компонентов) привели к тому, что собралось 4 проекта из 5.
Пятый при сборке ругается однообразно:
1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: __thiscall std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QAE@XZ) already defined in libcpmtd.lib(xlock.obj)
1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: __thiscall std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QAE@H@Z) already defined in libcpmtd.lib(xlock.obj)
1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "void __cdecl std::_Debug_message(wchar_t const *,wchar_t const *,unsigned int)" (?_Debug_message@std@@YAXPB_W0I@Z) already defined in libcpmtd.lib(stdthrow.obj)
и так далее.
Я пока не могу вникнуть в проблему. Основное мнение Гугла — что у какой то компоненты перепутаны варианты — static-non static и single thread-multithread. Но я не знаю, где это посмотреть, и как вообще систематически подходить к проблеме (а не типа "поменяю ка я тут конфигурацию с Release на Debug, вдруг да соберется")
К сожалению, объем кода большой, и детально разобраться что где подключается и используется — не представляется возможным.
Буду благодарен за советы.
Re: Linker error msvcprtd.lib(msvcp100d.dll) error lnk2005 already defined libcp
От: _NN_ www.nemerleweb.com
Дата: 06.03.13 14:18
Оценка: 10 (1)
Здравствуйте, SteeLHeaD, Вы писали:

SLH>Буду благодарен за советы.


Проблема проста, как и было сказано, в одном месте Multithread Dll в другом Multithread Static.
Искать довольно просто, просим у линкера детальную информацию: http://msdn.microsoft.com/en-us/library/wdsk6as6%28v=vs.110%29.aspx
Там все будет написано где кто и что ищет.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Linker error msvcprtd.lib(msvcp100d.dll) error lnk2005 already defined libcp
От: rg45 СССР  
Дата: 06.03.13 14:20
Оценка: 10 (1)
Здравствуйте, SteeLHeaD, Вы писали:

SLH>Господа,

SLH>забрал из VSS солюшен (из 5 проектов) для VS2010 и стал его собирать.
SLH>Увлекательный квест "собери меня" через неделю (с изменеием 32-64bit, дебага-недебага, и.т.п у самого проекта и требуемых внешних компонентов) привели к тому, что собралось 4 проекта из 5.
SLH>Пятый при сборке ругается однообразно:
1>>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: __thiscall std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QAE@XZ) already defined in libcpmtd.lib(xlock.obj)
1>>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: __thiscall std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QAE@H@Z) already defined in libcpmtd.lib(xlock.obj)
1>>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "void __cdecl std::_Debug_message(wchar_t const *,wchar_t const *,unsigned int)" (?_Debug_message@std@@YAXPB_W0I@Z) already defined in libcpmtd.lib(stdthrow.obj)
SLH>и так далее.
SLH>Я пока не могу вникнуть в проблему. Основное мнение Гугла — что у какой то компоненты перепутаны варианты — static-non static и single thread-multithread. Но я не знаю, где это посмотреть, и как вообще систематически подходить к проблеме (а не типа "поменяю ка я тут конфигурацию с Release на Debug, вдруг да соберется")
SLH>К сожалению, объем кода большой, и детально разобраться что где подключается и используется — не представляется возможным.
SLH>Буду благодарен за советы.


Я бы для начала убедился, что настройки Runtime одинаковые у всех проектов(C/C++/Code Generation/Runtime Library)
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[2]: Linker error msvcprtd.lib(msvcp100d.dll) error lnk2005 already defined li
От: SteeLHeaD  
Дата: 07.03.13 09:10
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Здравствуйте, SteeLHeaD, Вы писали:


SLH>>Буду благодарен за советы.


_NN>Проблема проста, как и было сказано, в одном месте Multithread Dll в другом Multithread Static.

_NN>Искать довольно просто, просим у линкера детальную информацию: http://msdn.microsoft.com/en-us/library/wdsk6as6%28v=vs.110%29.aspx
_NN>Там все будет написано где кто и что ищет.

Спасибо! Помогло!
В принципе, я сам дурак — за пару дней игры в квест "собери меня" были внесены изменения, и ключевым моментом было то что из SVN надо было забрать последнюю копию.
Но все равно ключ /VERBOSE оказался ОЧЕНЬ полезен и именно из за него "консилиум педиаторов" смог понять, что дальше делать
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.