Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
#1

Ошибка линковки в многофайловом проекте - C++

17.09.2014, 17:04. Просмотров 826. Ответов 22
Метки нет (Все метки)

что за на??? в проекте 3 модуля: main.cpp, test.cpp, test.h, в main.cpp и test.cpp подключен test.h, в test.h одна единственная функция int f() { return 0; } при компиляции пишет
error LNK2005: "int __cdecl f(void)" (?f@@YAHXZ) уже определен в test.obj
fatal error LNK1169: обнаружен многократно определенный символ - один или более

???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2014, 17:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка линковки в многофайловом проекте (C++):

Ошибка LNK2019 в многофайловом проекте - C++
Смысл: Мне нужно создать абстрактный класс контейнер, на его основе конкретные классы, далее создать абстрактный класс итератор и для...

Ошибка при работе с шаблонами в многофайловом проекте - C++
Цель проста - пишу класс очереди, используя шаблоны. Возниает следующая ошибка: ||=== Build: Debug in Queue (compiler: GNU GCC Compiler)...

Struct в многофайловом проекте - C++
Если в main файле создать структуру, то как её использовать в функциях, которые в других cpp файлах? Структуру требуется объявить в...

Ошибки в многофайловом проекте - C++
Здравствуйте! У меня есть многофайловый проект. Он не закончен (только начатый), но запуск возможен. При попытки компиляции я получаю...

Иерархия классов в многофайловом проекте - C++
Всем привет. Есть проблема с созданием программы. Должна быть небольшая иерархия классов, и все классы должны быть описаны в паре .h и .cpp...

Вывод в файл *.txt в многофайловом проекте - C++
Нужно перенаправить cout в файл. Я выводил в информацию в файл просто с помощью добавления такого вот кусочка кода: #include <fstream> ...

22
John Prick
830 / 763 / 152
Регистрация: 27.07.2012
Сообщений: 2,176
Завершенные тесты: 3
17.09.2014, 17:10 #2
GetHelp, о защите заголовков слышал?
Вставь в своём test.h
C++
1
2
3
4
5
6
#ifndef TEST_H
#define TEST_H // в самом начале файла
 
// ...
 
#endif // в самом конце файла
0
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
17.09.2014, 17:15  [ТС] #3
John Prick, не думаю что в этом дело, на соседнем ноуте это отлично компилируется в той же студии... и потом вставил #pragma once ничего не изменилось...
0
castaway
Эксперт С++
4919 / 3027 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
17.09.2014, 17:18 #4
Проблема не в этом.
Проблема в том, что ты описал функцию в заголовочном файле, при линковке она получается в двух объектных файлах.

Добавлено через 1 минуту
Не надо писать функции в заголовочных файлах, только прототипы.
0
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
17.09.2014, 17:18  [ТС] #5
Цитата Сообщение от castaway Посмотреть сообщение
Проблема не в этом.
Проблема в том, что ты описал функцию в заголовочном файле, при линковке она получается в двух объектных файлах.
но в заголовочных файлах точно на все 100% можно писать описание функций... всегда работало

Добавлено через 19 секунд
Цитата Сообщение от castaway Посмотреть сообщение
Не надо писать функции в заголовочных файлах, только прототипы.
не надо, однако можно же...
0
castaway
Эксперт С++
4919 / 3027 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
17.09.2014, 17:19 #6
Писать прототипы можно, сами функции можно но не нужно.
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
17.09.2014, 17:20 #7
Цитата Сообщение от castaway Посмотреть сообщение
Не надо писать функции в заголовочных файлах, только прототипы.
как же, как же ? а шаблоны ? а inline ?
0
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
17.09.2014, 17:20  [ТС] #8
Цитата Сообщение от castaway Посмотреть сообщение
Писать прототипы можно, сами функции можно но не нужно.
но почему не компилит???
0
Tulosba
17.09.2014, 17:21
  #9

Не по теме:

Цитата Сообщение от GetHelp Посмотреть сообщение
не надо, однако можно же...
можно и головой о стену побиться, но поможет ли?

0
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
17.09.2014, 17:21  [ТС] #10
Цитата Сообщение от Tulosba Посмотреть сообщение
можно и головой о стену побиться, но поможет ли?
попробовал, не помогло
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
17.09.2014, 17:22 #11
Цитата Сообщение от GetHelp Посмотреть сообщение
но почему не компилит???
компилит, но не линкует. Знаком такой термин как "one definition rule" ?
0
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
17.09.2014, 17:26  [ТС] #12
Цитата Сообщение от Tulosba Посмотреть сообщение
компилит, но не линкует. Знаком такой термин как "one definition rule" ?
википедия знает все one definition rule

Добавлено через 28 секунд

Не по теме:

что за нафиг упорно не вставляется ссылка

0
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
17.09.2014, 17:30 #13
Цитата Сообщение от Tulosba Посмотреть сообщение
компилит, но не линкует. Знаком такой термин как "one definition rule" ?
Оно?
0
Миниатюры
Ошибка линковки в многофайловом проекте  
DrOffset
7471 / 4467 / 1015
Регистрация: 30.01.2014
Сообщений: 7,321
17.09.2014, 18:03 #14
Цитата Сообщение от MousePro Посмотреть сообщение
Оно?
Оно. Только из стандарта цитату лучше брать

Цитата Сообщение от GetHelp Посмотреть сообщение
но почему не компилит???
GetHelp, вот по твоему вопросу. Темку сначала прочитай, потом пост по ссылке. Тема про переменные, но суть абсолютно такая же.
0
0x10
2512 / 1690 / 255
Регистрация: 24.11.2012
Сообщений: 4,237
17.09.2014, 18:04 #15
Читаю тему и не понимаю: проблема решена?
Если нет, то исходники в студию, а то получается диагностика по художественному пересказу.
0
17.09.2014, 18:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2014, 18:04
Привет! Вот еще темы с ответами:

Разделение класса со статической переменной в многофайловом проекте - C++
На ровном месте происходят какие-то непонятные чудеса, как будто бы я шаблонный класс объявляю - если реализация класса находится в...

Как избавиться от глобальных переменных в многофайловом проекте на С++? - C++
Некоторые глобальные переменные можно заменить на глобальные константы. Долго промучилась с проектом, но на попытках избавления от...

Определение метода вне класса, как inline в многофайловом проекте - C++
Здравствуйте! Помогите разобраться!) В общем имеется: ...

Ошибка 2019 с линковщиком в многофайловом приложении - C++
не могу понять в чем тут проблема. выдает ошибки: 1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.