powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Глюк в Visual C++. Как обойти?
10 сообщений из 10, страница 1 из 1
Глюк в Visual C++. Как обойти?
    #33289488
CubeReality Inc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет,

У меня 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)

В чем проблема? То что это не мой глюк это точно. Поскольку между его заскоками с работой-неработой я свой код вообще не менял !!!.

Для пофиксенья данной ошибки мне приходится пересоздавать проект и копировать код целиком из старого проекта в новый. И тогда все опять работает но не надолго. В общем не совсем удобно :(.

Заранее спасибо за любую помощь в обходе данной ошибки.
...
Рейтинг: 0 / 0
Глюк в Visual C++. Как обойти?
    #33290028
pirovindos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иногда помогает удалить с диска промежуточные результаты компилятор/линкера, т.е. каталоги типа debug и Release
...
Рейтинг: 0 / 0
Глюк в Visual C++. Как обойти?
    #33290683
Anton M.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего в проге присутствует какая то некорректная работа с памятью, хэндл там не закрыл, или трэд.
В таких случаях помогает перегрузить машину и удалить временные ф-лы.
...
Рейтинг: 0 / 0
Глюк в Visual C++. Как обойти?
    #33290785
redskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(с тем же самым кодом !!! Ничего не менялось что странно !!!).
Не бывает (с) :)

Ошибка LNK2005 говорит о том, что указанный символ (переменная или функция) определен более одного раза (подробнее посмотри соответствующие статьи в MSDN). Проверь список подключаемых библиотек, проверь свои подключаемые исходники и пр. Если ничего не менялось в проекте, то значит что-то менялось вне его, от чего твой проект зависит... Судя по тому, что ругань на операторы new и delete, возможно проблема в том, что ты пытаешься слинковаться с дебажной и с релизными версиями каких-то либок.

Проверь для конфигруаций Release и Debug настройки в пунктах
с/с++\Code Generation\Runtime library
Linker\Input\Additional Dependencies
...
Рейтинг: 0 / 0
Глюк в Visual C++. Как обойти?
    #33291334
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поищите описание ошбки - там есть рецепт лечения.
В кратце - надо посмотреть подробный лог. Исключить из дефолтных эти библиотеки и добавить их как дополнительные. При этом возможно придётся поэкспериментировать с порядком следования. Если я не ошибаюсь, то порядок обратен тому, который описан в ошибке.
Вот кусок *.vcproj

<Tool
Name="VCLinkerTool"
AdditionalDependencies="odbc32.lib nafxcwd.lib libcpmtd.lib"
OutputFile="$(OutDir)/SMSAS.exe"
LinkIncremental="2"
IgnoreDefaultLibraryNames="nafxcwd.lib;libcpmtd.lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/SMSAS.pdb"
SubSystem="1"
TargetMachine="1"/>
...
Рейтинг: 0 / 0
Глюк в Visual C++. Как обойти?
    #33291337
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл добавить - для релиза и для дебага, естественно, библиотеки разные.
...
Рейтинг: 0 / 0
Глюк в Visual C++. Как обойти?
    #33295798
Kagoric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В свое время я убил кучу времени на LNK2005.
Ну не хотела lib подключаться и все. Оказалось реально
глюк VC 2003. Хотя ошибка и случай похоже другой,
но проверить порядок подлючения библиотек стоит.

http://www.rsdn.ru/article/mfc/DllMainAlreadyDefined.xml
...
Рейтинг: 0 / 0
Глюк в Visual C++. Как обойти?
    #33296180
Homosum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень часто сталкиваюсь с такой проблемой. Помогает удаление obj файлов. А также как ни странно!!! - просто нажимаю на кнопку start (которая в VC, конечно) и прога компилится!!! Тогда что же я подключаю дважды, если она компилится и выполняется?
...
Рейтинг: 0 / 0
Глюк в Visual C++. Как обойти?
    #33296614
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не понял? Я же пример привёл лечения.

1. Смотрите лог и выписываете имена библиотек.
2. Исключаете их из дефолтных.
3. Вставляете их в дополнительные.

Всё это описано в комментариях к ошибке линкера. Нужно только раз поискать.
...
Рейтинг: 0 / 0
Глюк в Visual C++. Как обойти?
    #33297600
Kagoric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sorry. Надо меньше работать ... :)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Глюк в Visual C++. Как обойти?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]