Как исправить ошибки LNK2005 и LNK1169 ?
Добрый день!
Написала программу, а мне выдаёт ошибки, а именно: LNK2005 и LNK1169 .
Подскажите пожалуйста как это исправить.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
#include"stdafx.h" #include #include int main() using namespace std; setlocale(LC_CTYPE, "Russian"); unsigned int a; int p; int N; cout "Введите число А "; cin >> a; cout "Введите p "; cin >> p; cout "Введите n "; cin >> N; for (int i = p; i p + N; i++) a cout endl; system("pause"); return 0; }
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

LNK2005 и LNK1169. Не знаю, как исправить
Есть несколько файлов, жалуется на LNK2005 и LNK1169, не знаю, как исправить #pragma once.

Ошибки линковки LNK2005, LNK1169
Как-то пробовал сделать программу из нескольких модулей, но наткнувшись на какие-то непонятные.

LNK2005+LNK1169
Ошибки: Error LNK2005 "char const * * botNames" (?botNames@@3PAPEBDA) already defined in.
Ошибки LNK2005 и LNK1169
Такой вопрос. Работаю в Visual Studio. Почему когда я создаю 2 элемента с расширением .cpp, в.
Lnk2005 c как исправить
Странные ошибки линковки
| От: | Vadya |
| Дата: | 07.12.04 09:09 |
| Оценка: |
Re: Странные ошибки линковки
| От: | Syd |
| Дата: | 07.12.04 09:14 |
| Оценка: |
Похоже на типичный случай смешивания разных рантаймов (MSVCRTD.lib и LIBCMTD.lib) для разных компонентов компилируемого проекта. Может какие-то сторонние модули используются?
I’m just talking about having fun
Re[2]: Странные ошибки линковки
| От: | Vadya | |
| Дата: | 07.12.04 10:26 | |
| Оценка: | 1 (1) | |
Как исправить ошибку линковая файлов С++ в VS 2017(LNK2005)?


— тоже не рабит(
В гугле нашел информацию про переопределение в нескольких файлах одной и той же функции, но у меня всего 1 файл с определением и подключаю его всего 1 раз;
Если мысль, что ошибка из-за того, что подключаю как-то так: Source.cpp -> MyForm.h -> MyForm.cpp.
Подскажите, как правильно!
- Вопрос задан более трёх лет назад
- 526 просмотров
3 комментария
Средний 3 комментария

Станислав Макаров @Nipheris Куратор тега C++
Зачем вы инклудите cpp-шник? Вам не кажется это странным? У вас есть какие-либо причины для этого?

Evgeny Proff @EvgenyProff Автор вопроса
Станислав Макаров, потому что
Возможно напутал с пространством имен или подключением, но если создать заголовок H1.h, где написать:
#include "source.cpp" void solve();
— тоже не рабит(
нет желания переписывать 1.3к строк кода куда-либо из файла, нужно только вне этого файла вызвать 1 функцию.
Евгений Шатунов @MarkusD Куратор тега C++
Evgeny Proff , да, студия у тебя клевая, подсветка темная, все модно-молодежно. Ничего не видно. Убирай картинки, замени их на тег code. Большие вставки кода — в спойлеры с пояснениями.
Решения вопроса 1
1. В *.h файлах должны быть только заголовки функций и объявления глобальных переменных.
2. *.cpp файлы не пишут в #include’ах ( в них пишут только *.h ) , *.cpp компилируются отдельно и потом полученные объектные файлы линкуются вместе в один исполняемый.
3. Для избежания включения несколько раз одного и того же файла используйте #ifndef:
// файл MyForm.h #ifndef __MYFORM__ #define __MYFORM__ // здесь содержимое файла #endif
Ответ написан более трёх лет назад
Нравится 1 4 комментария

Evgeny Proff @EvgenyProff Автор вопроса
Возможно я неправильно сформулировал вопрос:
Есть файл *h и файл *cpp, мне нужно в файле *h вызвать функцию из файла *cpp того же проекта.
Как я могу это сделать?
Evgeny Proff, в файлах *.h ничего не должно вызываться, в них вообще не должно быть определений функций, только их прототипы (заголовки). А сами эти функции объявляются в *.cpp файле с таким же именем. *.h файл включается в файлы где нужно использовать функции из *.cpp файла.

Evgeny Proff @EvgenyProff Автор вопроса
Игорь, Вы имеете в виду то, что следует определения функций интерфейса у формы перенести в Form.h -> Form.cpp и там работать. Через часик апдейтну.
Ошибка error LNK2005 [закрыт]
Вопросы с просьбами помочь с отладкой («почему этот код не работает?») должны включать желаемое поведение, конкретную проблему или ошибку и минимальный код для её воспроизведения прямо в вопросе. Вопросы без явного описания проблемы бесполезны для остальных посетителей. См. Как создать минимальный, самодостаточный и воспроизводимый пример.
Закрыт 6 лет назад .
Написал программу которая берет данные с сайта и выводит их в DataGridView, все работает когда одна форма. Но когда я добавил вторую форму, чтобы открывалось в ней повылазили ошибки: Типа: Ошибка error LNK2005
Отслеживать
51.2k 86 86 золотых знаков 266 266 серебряных знаков 505 505 бронзовых знаков
задан 31 окт 2016 в 5:10
11 1 1 золотой знак 1 1 серебряный знак 2 2 бронзовых знака
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Вы гениально продемонстрировали, как НЕ надо задавать вопросы. Никакой полезной информации, не совсем соответствующий тэг, не указан даже компилятор, вывалена вся куча ваших файлов.
Судя по тому, что такое ошибка LNK2005, вы ухитрились, например, дважды описать одну и ту же функцию — добавляя эту вторую форму. У вас в результате есть две функции с одним и тем же именем, и линковщик не знает, какую выбрать.
Вот официальное мнение MS :), почему такое происходит и что делать. Позвольте и мне задать вам вопрос: что здесь было непонятно для вас? (Потому что поверить в то, что человек не попытался разобраться с проблемой сам, и не искал решение на официальном сайте компилятора, а понесся сразу на SO — просто не могу. Программисты так не поступают :))
- Смешивание статических и динамических библиотек при одновременном использовании /clr.
- Символ является упакованной функцией (созданной путем компилирования с параметром /Gy) и был включен более чем в один файл, но изменен в промежутке между компиляциями. Перекомпилируйте все файлы, включающие symbol.
- Символ определен по-разному в двух объектах-членах в различных библиотеках, и оба объекта-члена используются.
- Абсолютное значение определено дважды с различными значениями.
- Файл заголовка объявлен и определен как переменная. Ниже представлены возможные решения. Объявите переменную в H-файле: extern BOOL MyBool;, а затем присвойте ей значение в C-файле или CPP-файле: BOOL MyBool = FALSE;. Объявите переменную как static. Объявите переменную как selectany.
- Вы используете uuid.lib в сочетании с другими файлами LIB, определяющими идентификаторы GUID (например oledb.lib и adsiid.lib).