У меня Visual Studio 2003.NET (версия 7.1.3088). Есть проект который я создал в этой же среде (MFC App). Проблема в том, что после присоединения необходимых мне моих исходников он иногда (не всегда) перестает работать. Проявляется это оригинально, т.е. то он работает, то на следующий день я его открываю и он перестает работать (с тем же самым кодом !!! Ничего не менялось что странно !!!). Когда я говорю что не работает это значит что выдается ошибка линковщика:
CubeReality error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in libcpmtd.lib(newop.obj)
CubeReality error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) already defined in libcpmtd.lib(newaop.obj)
CubeReality error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMTD.lib(dbgdel.obj)
CubeReality error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) already defined in LIBCMTD.lib(delete2.obj)
В чем проблема? То что это не мой глюк это точно. Поскольку между его заскоками с работой-неработой я свой код вообще не менял !!!.
Для пофиксенья данной ошибки мне приходится пересоздавать проект и копировать код целиком из старого проекта в новый. И тогда все опять работает но не надолго. В общем не совсем удобно :(.
Заранее спасибо за любую помощь в обходе данной ошибки.
Скорее всего в проге присутствует какая то некорректная работа с памятью, хэндл там не закрыл, или трэд. В таких случаях помогает перегрузить машину и удалить временные фалы.
Ошибка LNK2005 говорит о том, что указанный символ (переменная или функция) определен более одного раза (подробнее посмотри соответствующие статьи в MSDN). Проверь список подключаемых библиотек, проверь свои подключаемые исходники и пр. Если ничего не менялось в проекте, то значит что-то менялось вне его, от чего твой проект зависит... Судя по тому, что ругань на операторы new и delete, возможно проблема в том, что ты пытаешься слинковаться с дебажной и с релизными версиями каких-то либок.
Проверь для конфигруаций Release и Debug настройки в пунктах с/с++\Code Generation\Runtime library Linker\Input\Additional Dependencies
Поищите описание ошбки - там есть рецепт лечения. В кратце - надо посмотреть подробный лог. Исключить из дефолтных эти библиотеки и добавить их как дополнительные. При этом возможно придётся поэкспериментировать с порядком следования. Если я не ошибаюсь, то порядок обратен тому, который описан в ошибке. Вот кусок *.vcproj
В свое время я убил кучу времени на LNK2005. Ну не хотела lib подключаться и все. Оказалось реально глюк VC 2003. Хотя ошибка и случай похоже другой, но проверить порядок подлючения библиотек стоит.