![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Random86 |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 23.7.2007 Репутация: нет Всего: нет |
Пишу программу на VS2005. И все время возникает ошибка вовремя линковки:
Linking... stdafx.obj : error LNK2005: "struct TID3Tag __clrcall ReadTAgMP3(char const *)" (?ReadTAgMP3@@$$FYM?AUTID3Tag@@PBD@Z) already defined in BaseMP3.objD:\Documents and Settings\Danger\Мои документы\Visual Studio 2005\Projects\BaseMP3\Debug\BaseMP3.exe : fatal error LNK1169: one or more multiply defined symbols found Такая ошибка всегда вылезает, если я использую любую самостоятельную написанную функцию. В данном случае код функции:
И когда в событие вызывается данная функция, вылетает ошибка.
А если закомментировать вызов функции
то ошибки нету. Сам проект ATL, но такая ошибка возникала и при написание консольных программ. Как я понял проблема с очисткой стека. Заранее спасибо всем ответившим. |
||||||
|
|||||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Стек тут абсолютно не при чем. Твоя программа даже выполняться не начала. функция в каком файле определена? Проблема скорее всего в том, что тело функции оказывается включенным в программу несколько раз. Если оно находится в *.h-файле, то надо использовать стражей включения (впрочем, их надо использовать всегда). |
|||
|
||||
Random86 |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 23.7.2007 Репутация: нет Всего: нет |
Я неверно выразился, ошибка на этапе организации очистки стека. Раньше когда такая ошибка выскакивала я статические переменные заменял на динамические, и ошибка пропадала.
Сначала функция была определена в stdafx.h, и там же реализована. Разбил эту функцию, как и положено в stdafx.h определение, а в stdafx.cpp реализация. Ошибка пропала, может я и не правильно работаю с модулями, так как писал до этого в Delphi, и по привычке все в один модуль включаю.
Имеется ввиду помечать их extern?(т.е тут объявлен, а реализация встретиться потом) |
||||||
|
|||||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
Создай отдельные h и cpp для своих ф-й, насколько я знаю stdafx - для прекомпиляции заголовков если не прав, поправьте.
|
|||
|
||||
JackYF |
|
||||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
нет, имеется в виду, что твои вручную написанные .h - файлы нужно обрамлять чем-то типа:
Погугли, узнаешь больше. Ну вообще-то это системный файл, свои функции лучше в своих файлах и делать... Я так понял, проблема решена? Если да, то закрывай тему. |
||||
|
|||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Не делай так никогда. stdafx.h может содержать часто используемые системные и библиотечные заголовки (которые не меняются), а свои заголовки туда включать не стоит, а тем более объявления функций. Любое изменение stdafx.h - это полная перекомпиляция всего модуля (DLL или EXE). -------------------- ... |
|||
|
||||
Dronchik |
|
|||
![]() Звукач ёмаё ![]() ![]() Профиль Группа: Участник Сообщений: 451 Регистрация: 1.5.2007 Репутация: 0 Всего: 37 |
А полная перекомпиляция очень долго может длится. Так что делай как сказал JackYF.
-------------------- Вместо слов делай дело, от которого ты фанатеешь. (с) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |