Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 10.06.2016
Сообщений: 32

Ошибка линковки

31.07.2016, 16:13. Показов 1740. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Столкнулся со следующей проблемой. в программе 9 файлов. 4 .h, 4 .cpp и main.cpp. взаимодействуют между собой вот так - 2, 3, и 4 используют 1(указано #pragma once). а в майне в загаловочных соответственно - 2, 3, 4. Так вот мне нужна глобальная переменная. Она должна взаимодействовать по крайней мере со 2, 3 и 1 файлами. Уже намучился, по всякому ее объявлял - и просто, и через extern, и по разным файлам пихал, бестолку. Ошибку выдает fatal error LNK1169: one or more multiply defined symbols found. кто что знает, подскажи. буду очень благодарен.

P.S. код не вставил что бы не нагромождать. Но если нужно, покажу.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.07.2016, 16:13
Ответы с готовыми решениями:

Ошибка линковки
Как исправить эту ошибку линковки? LRESULT CALLBACK WndProc(HWND, UINT , WPARAM, LPARAM); // Прототип функции WndProc BOOL...

ошибка линковки
int main() { return 0; } делаю так: в MSVC++ создаю проект консоли, выбираю пустой проект, затем создаю файл кода с++, пишу эти...

Ошибка линковки
Ругается на: 1>Generating Code... 1>Skipping... (no relevant changes detected) 1>WinMain.cpp 1>Linking... 1>Parser.obj : error...

6
 Аватар для HenryDukart
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
31.07.2016, 16:25
EricJForster, ошибка сообщает, что у вас одно или несколько повторных определений. Видимо, вы не правильно используете extern. Покажите структуру вашей программы (что чего кого включает), чтобы была видна ваша глобальная переменная.
0
Модератор
Эксперт С++
 Аватар для zss
13780 / 10973 / 6491
Регистрация: 18.12.2011
Сообщений: 29,259
31.07.2016, 18:20
Объявление переменной должно быть в одном cpp файле.
А в h файлах она должна быть описана с префиксом extern.
0
829 / 253 / 34
Регистрация: 27.07.2016
Сообщений: 497
Записей в блоге: 1
31.07.2016, 18:50
Цитата Сообщение от zss Посмотреть сообщение
Объявление переменной должно быть в одном cpp файле.
А как тогда её в другой единице трансляции использовать без объявления?
Цитата Сообщение от zss Посмотреть сообщение
А в h файлах она должна быть описана с префиксом extern.
Это как раз и есть объявление



P.S. Эксперт
0
Модератор
Эксперт С++
 Аватар для zss
13780 / 10973 / 6491
Регистрация: 18.12.2011
Сообщений: 29,259
31.07.2016, 19:29
Лучший ответ Сообщение было отмечено EricJForster как решение

Решение

C++
1
extern int X;
просто информирует компилятор о том, что такая переменная где-то существует,
а
C++
1
int X;
Объявляет эту переменную
Кстати
C++
1
static int X;
объявляет переменную недоступную в других единицах трансляции.
1
829 / 253 / 34
Регистрация: 27.07.2016
Сообщений: 497
Записей в блоге: 1
31.07.2016, 19:31
Цитата Сообщение от zss Посмотреть сообщение
Объявляет эту переменную
Это определение
Цитата Сообщение от zss Посмотреть сообщение
просто информирует компилятор о том, что такая переменная где-то существует,
Это объявление

Добавлено через 47 секунд
Цитата Сообщение от zss Посмотреть сообщение
объявляет переменную недоступную в других единицах трансляции.
В C++ кошернее использовать безымянное пространство имен для этих целей, а не static.
0
1 / 1 / 0
Регистрация: 10.06.2016
Сообщений: 32
31.07.2016, 19:33  [ТС]
разобрался. спасибо огромное
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.07.2016, 19:33
Помогаю со студенческими работами здесь

Ошибка линковки
Добрый вечер,подскажите как исправить ошибку линковки? мой код: #include<fstream.h> #include<windows.h> void create_file(int...

Ошибка линковки
Здравствуйте. Создаю многофайловую программу. При компиляции всё замечательно, а потом возникает следующая ошибка: Error 2 error...

Ошибка линковки
Вот список инклудов: #define _CRT_SECURE_NO_WARNINGS #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include...

Ошибка линковки
Всем привет! Пишу программу на С++ в среде VS2008, чудеса происходят, в ходе редактирования кода и его дополнения, соответственно...

Ошибка линковки GoogleTest
У меня создан проэкт в котором есть класс который нужно протестировать, я создал проэкт GoogleTest, добавил ссылку на проэкт с классом, и у...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru