Умные вопросы
Войти
Регистрация
Программа в с+ выдаёт: ошибку обнаружен многократно определенный символ - один или боле
12 года
назад
от
Андрей Батавин
3 Ответы
▲
▼
0
голосов
Проверить список LIB файлов, которые задействованы в компановке (линковании) . Например, добавили две библиотеки в которых определена одна и та же функция. Линкер в растерянности, какую функцию брать.
12 года
назад
от
Дмитрий Серебренников
▲
▼
0
голосов
разбираться. у тебя одна функция есть в двух объектниках. Причем - не какая-попало, а main!
12 года
назад
от
3,14
▲
▼
0
голосов
Причина, указанная Андрем Котоусовым, возможна, но маловероятна. Те, кто линкует в свой экзешник множество библиотек, не задают таких вопросов. Тем боле что в современных библиотеках используются namespace'ы, так что столкновения имен обычно не происходит.
А ВЕРОЯТНАЯ причина вот какая. Вы поместили определение функции (подчеркиваю, именно определение, то есть ТЕЛО функции, а не е декларацию) в *. h файл. Если этому файлу сделан #include только в ОДИН *. cpp файл, то линковка пройдет и линковщик ни на что не пожалуется. Но если этому файлу сделан #include в два или боле *. cpp файлов, то после компиляции в каждом из них возникнет та же самая функция. Линковщик выругается, что видит больше одной функции с одним и тем же прототипом. Решения у этой проблемы два: или перенести тело функции в *. cpp файл, оставив в *. h файле только декларацию (прототип) , или оставить функцию на месте, но объявить е inline.
Тот же самый эффект может получиться не только с функциями, но и с другими объектами. Скажем, для статических членов класса нужно давать определение в *. ср файле, за пределами определения класса. Но если вы поместите это определение в *. h файл, а затем сделаете этому файлу #include в два или боле *. cpp файлов, то линковщик выругается, что он видит несколько определений одного и того же символа.
Кстати, Михаил Левин неправ: чтобы получить такую жалобу от линковщика, совершенно не обязательно сдублировать определение ИМЕННО фунции main. Любая функция проканает.
12 года
назад
от
*МаРиЯ*Ms.HUMOUR %)
Связанные вопросы
1
ответ
Какая наука самая важная
3 года
назад
от
MichaelaAspi
2
ответов
Почему у пропеллера скрученная форма А у лопастей вертолета нет?
2 года
назад
от
JanieTrent22
1
ответ
будут ли лучи фокусироваться в сферическом вогнутом зеркале?
7 года
назад
от
BiancaD18808