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

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

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

Проверь для конфигруаций Release и Debug настройки в пунктах
с/с++\Code Generation\Runtime library
Linker\Input\Additional Dependencies
...
Рейтинг: 0 / 0
27.09.2005, 16:14
    #33291334
nikname
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк в Visual C++. Как обойти?
Поищите описание ошбки - там есть рецепт лечения.
В кратце - надо посмотреть подробный лог. Исключить из дефолтных эти библиотеки и добавить их как дополнительные. При этом возможно придётся поэкспериментировать с порядком следования. Если я не ошибаюсь, то порядок обратен тому, который описан в ошибке.
Вот кусок *.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
27.09.2005, 16:15
    #33291337
nikname
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк в Visual C++. Как обойти?
Забыл добавить - для релиза и для дебага, естественно, библиотеки разные.
...
Рейтинг: 0 / 0
29.09.2005, 13:46
    #33295798
Kagoric
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк в Visual C++. Как обойти?
В свое время я убил кучу времени на LNK2005.
Ну не хотела lib подключаться и все. Оказалось реально
глюк VC 2003. Хотя ошибка и случай похоже другой,
но проверить порядок подлючения библиотек стоит.

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

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

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


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