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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 38, средняя оценка - 4.63
warobushek
2 / 2 / 0
Регистрация: 08.03.2008
Сообщений: 82
#1

Линковка проекта. - C++

15.07.2008, 06:19. Просмотров 4698. Ответов 4
Метки нет (Все метки)

Уважаемые профессионалы, ткните меня носом в ошибку.
Есть некоторая программа с множеством функций и файлов.

-------------------------------------------------------------------------------
1. В проект входят:
main.cpp
файл1.сpp
файл2.сpp
...
файлN.сpp

2. Структура main.cpp :
#include main.h
<функция main>

3.Структура остальных файлов:
#include main.h
<функции>

4.Структура main.h:
#ifdef SECOND
extern переменная_1;
extern переменная_2;
#endif

#ifndef SECOND
#define SECOND
<включение заголовочных файлов>
<пользовательские типы данных>
<прототипы всех функций проекта>
глобальная переменная_1;
глобальная переменная_2;
#endif

-------------------------------------------------------------------------------

Проблема в том, что на стадии линковки происходит ошибка - "повторное объявление глобальных переменных 1 и 2".
В чем проблема? Защита ведь вроде стоит.

среда - Borland C 3.1++
----------------------------------
Если на словах не понятно, то есть возможность посмотреть сами исходники на http://warobushek.jino-net.ru/work.rar
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2008, 06:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Линковка проекта. (C++):

Статическая линковка - C++
Добрый вечер. Прочитал что бы екзешка запускалась на любом компьютере нужно сделать статическую линковку. То есть прикрепить к екзешнику...

Статическая линковка - C++
Появилась необходимость прилинковать статическую библиотеку (GLFW) к проекту на C++. Я подключил заголовки, а вот саму библиотеку...

Линковка плюсового кода - C++
Компилирую статическую библиотеку c++ для последующего ее включения в с-проект. Делаю так: set COMPILER=...\arm-elf-g++.exe set...

Линковка библиотек в VS C++2010 - C++
Где то в параметрах проекта можно производить линковку библиотек к проекту. Кто нибудь знает где это искать., пролазил все настройки не...

Статическая линковка MinGW - C++
Как задать статическую линковку для MinGW в среде Qt Creator? Прописал в pro- файле:, но не помогло.

Статическая линковка boost - C++
Hi all! Захотелось побаловаться бустом, и столкнулся с проблемой, что в пакете boost-libs отсутствуют *.а файлы. Сначала я хотел...

4
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
15.07.2008, 20:35 #2
Защита ведь вроде стоит..
Какая защита ? От чего ? Область действия препроцессорного определения - файл. Дальше сам додумаешься, почему у тебя ошибка ?

Добавлено через 2 минуты
P.S. И компилятор меняй побыстрее на какой-нибудь более или менее человеческий..
0
warobushek
2 / 2 / 0
Регистрация: 08.03.2008
Сообщений: 82
16.07.2008, 06:36  [ТС] #3
Т.е.
1. нужно просто вручную в одном из файлов определить глобальные перменные, а во всех других переменные extern?
2. прототипы тоже будут включены во все файлы?

3. Подскажите, пожалуйста, как получить отпрекомпилированный код всего проекта, а не только одного файла? Для одного файла я использую следующую команду: C:\bc31\bin\cpp.exe -IC:\bc31\include имя_файла
0
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
16.07.2008, 09:40 #4
Цитата Сообщение от warobushek Посмотреть сообщение
Т.е.
1. нужно просто вручную в одном из файлов определить глобальные перменные, а во всех других переменные extern?
Да
Цитата Сообщение от warobushek Посмотреть сообщение
2. прототипы тоже будут включены во все файлы?
Нет, прототипы достаточно определить в main-хедере, а потом везде его включить в исходные файлы.
Цитата Сообщение от warobushek Посмотреть сообщение
3. Подскажите, пожалуйста, как получить отпрекомпилированный код всего проекта, а не только одного файла? Для одного файла я использую следующую команду: C:\bc31\bin\cpp.exe -IC:\bc31\include имя_файла
Скорми компилятору в строчку не один файл, а все сразу. Да смени компилятор то ! Потом переучиваться на новые стандарты задолбаешься..
0
warobushek
2 / 2 / 0
Регистрация: 08.03.2008
Сообщений: 82
17.07.2008, 06:58  [ТС] #5
Спасибо за ответы. Компилятор сменю после этой проги
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2008, 06:58
Привет! Вот еще темы с ответами:

Правильная линковка библиотек - C++
Долго искал в интернете, ничего толкового не нашёл, решил спросить тут. После создания приложения компилятор прицепляет файл статически,...

Линковка библиотек DirectX SDK - C++
Добрый день, знатоки. У меня проблема с линковкой, поиск юзал, но советы из других тем не помогли. В общем, установил я Microsoft DirectX...

Линковка, реализация в заголовочных файлах - C++
Ситуация следующая. Представим себет хедер, который содержит некоторый функционал и должен использоваться в нескольких проектах. Причем ...

Линковка, статические, динамические библиотеки - матчасть - C++
Парился сегодня целый день, компиля cUrl c MinGW с поддержкой https - т.е. с OpenSSL и zlib. Долго мучался, ив процессе понял, что имею...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
17.07.2008, 06:58
Ответ Создать тему
Опции темы

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