Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Собрать проект в Borland C++ 3.1, странная ошибка линковщика 
V
    Опции темы
Fedor
Дата 17.2.2007, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Привет всем. Я вот сейчас сижу в легком замешательстве. Не получается в борландовском c++ 3.1 сделать элементарный проект из трех файлов: главного файла, хедера и файла с реализацией этого хедера. Собственно, вот код:
Хедер t.h:
Код

#ifndef T_H
#define T_H

void tt( const int param );

#endif /*T_H*/


Реализация хедера. Файл t.cpp:
Код

#include "t.h"

#include <iostream.h>

void tt( const int param )
{
  cout<<param;
}


Главный файл test.cpp:
Код

#include "t.h"

int main()
{
  tt(2);
  return 0;
}


При линке вылазит ошибка
Цитата
tt(const int) defined in module t.cpp is duplicated in module t.cpp


Возможно, стоит упомянуть что все три файла - находятся в проекте. Кроме этих файлов в проекте ничего нет.

Может, у меня что-то с настройками, но вроде пересмотрел все, вроде ничего проблемного нет...

P.S. В студии подобный код работает на ура.


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
apook
Дата 17.2.2007, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Включи все файлы в командную строку компилятора tcc

tcc -e a.cpp b.cpp c.cpp


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
Fedor
Дата 19.2.2007, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Ага. Нашел в принципе некое решение проблемы. Нужно было в опциях проекта для каждого h-файла вручную выставлять опцию "Exclude from link". Т.е. линковщик cpp и h файлы компилировал в один объектник, насколько я понял и потом кричал что две одинаковые функции.

В общем, такой уже вопрос, для общего ознакомления: зачем он это делает, можно ли все это как-то настроить, или где моя криворукость?

Спс.


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Kuvaldis
Дата 22.2.2007, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 11
Всего: 61



Fedor
Включай в проект ТОЛЬКО *.cpp. Хедеры не трогай. Include-ы оставь. 
И все будет работать smile  


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
dizzy1984
Дата 5.4.2007, 05:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 15.2.2007

Репутация: 3
Всего: 25



Цитата

void tt( const int param );

поставив пточку с запятой ты определил процедуру с пустым телом

Цитата

void tt( const int param )
{
cout<<param;
}

после чего определил ее снова с кодом вывода переенной

ну не ставятся в c ; при объявлении процедуры.
PM MAIL   Вверх
Earnest
Дата 5.4.2007, 06:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(dizzy1984 @  5.4.2007,  06:59 Найти цитируемый пост)
поставив пточку с запятой ты определил процедуру с пустым телом

Цитата(dizzy1984 @  5.4.2007,  06:59 Найти цитируемый пост)
ну не ставятся в c ; при объявлении процедуры. 

Неважное начало жизни на форуме -  так категорически заявлять полную ерунду... smile 
Ты совершенно не прав. Пустое тело - это две скобки {}, а первое выражение - просто предварительное объявление функции. Их может быть сколько угодно, лишь бы друг другу не противоречили.


--------------------
...
PM   Вверх
zkv
Дата 5.4.2007, 07:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(dizzy1984 @  5.4.2007,  05:59 Найти цитируемый пост)
поставив пточку с запятой ты определил процедуру с пустым телом

да никакого определения (definition) тут нет, это объявление (declaration) функции, или другими словами ее прототип.
PM MAIL   Вверх
dizzy1984
Дата 9.4.2007, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 15.2.2007

Репутация: 3
Всего: 25



Цитата

Неважное начало жизни на форуме -  так категорически заявлять полную ерунду...

smile Ты права. Сознаюсь, надо было сначала попробовать скомпилить прогу.
Это действительно просто декларация.
Меня ввела в заблуждение пришедшая мне на память старая история про то как все начинающие программисты при
переходе с pascal на c++ ставят ; после прототипа функции, после чего пишут на новой строке 
символ открывающейся фигурной скобки и получают ошибку компиляции.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0990 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.