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

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 73, средняя оценка - 4.97
Eugeniy
3119 / 1312 / 141
Регистрация: 19.12.2009
Сообщений: 1,808
#1

Модули в C++ - C++

02.01.2010, 19:23. Просмотров 9825. Ответов 17
Метки нет (Все метки)

Доброе время суток!
Помогите мне пожалуйста со следующей проблемой. Никак не розберусь с модулями на C++.
Создаю один header файл с рассширением .H . Пишу в нём заголовки функций. Создаю второй source файл с рассширением .С где собственно и указываю все эти функции (естественно подключив header файл). Создаю тест програму. Все три файла находяться рядом в одной папке. Во время компиляции в тестирующей програме мне упорно выдает.
Error: Unresolved external 'sum(int)' referenced from Y:\DOCUME\C++\FFFD.OBJ
(FFFD название проги).
Это даже несмотря на то, что я брал одну функцию причем самую элементарную, где просто невозможно зделать ошибку! В чем же проблема?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2010, 19:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Модули в C++ (C++):

Решаем программы, пишем собственные модули и функции - C++
Решаем программы, пишем собственные модули и функции. Давайте в этой теме будем писать совместно программы и их отлаживать. ...

Разбить программу на модули - C++ Builder
Не могу найти информацию по условной компиляции. Точнее кучу описаний деректив препроцессора С++ найти можно, но вот какого-то более...

Переписать модули с Delphi на c++ в проге на билдере - C++ Builder
Задание: Дана строка символов, состоящая из произвольного текста, слова разделены пробелами. Вывести на экран порядковый номер слова...

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

Переписать модули перемещения строк матрицы с Delphi на c++ - C++ Builder
Суть задания: В матрице размером NxM поменять местами строку,содержащую элемент с наибольшим значением со строкой,содержащей элемент с...

Отладка в Rad Studio 2010 - отключить модули - C++ Builder
Всем Здрасте, такая проблемка ребята при прогоне программы по точкам останова среда разработки прогоняет (F7 и F8) по всем модулям ()...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
verzer
94 / 94 / 4
Регистрация: 29.12.2009
Сообщений: 204
02.01.2010, 19:44 #2
раз уж модули на C++, то и расширение должно быть .cpp, но это не так важно.
скорее всего файл.C не скомпилировался, т.к не был добавлен в проект. кстати, какая IDE?
Eugeniy
3119 / 1312 / 141
Регистрация: 19.12.2009
Сообщений: 1,808
02.01.2010, 19:50  [ТС] #3
Простите, я в C++ не очень хорошо шарю, что такое IDE?
verzer
94 / 94 / 4
Регистрация: 29.12.2009
Сообщений: 204
02.01.2010, 19:54 #4
где вы код пишите? чем компилируете?
Eugeniy
3119 / 1312 / 141
Регистрация: 19.12.2009
Сообщений: 1,808
02.01.2010, 19:56  [ТС] #5
В универе взял старый BC5, а пишу в bcw.
verzer
94 / 94 / 4
Регистрация: 29.12.2009
Сообщений: 204
02.01.2010, 20:00 #6
IDE это "Среда разработки", по-русски говоря. а по-бусурмански - Integrated Development Enviroment

Добавлено через 2 минуты
вот это да..
затрудняюсь ответить, как там собрать весь проект..
попробуйте скомпилировать сначала модуль, а потом уже тестовую программу
Eugeniy
3119 / 1312 / 141
Регистрация: 19.12.2009
Сообщений: 1,808
02.01.2010, 20:09  [ТС] #7
Простите, я наверное не понял. Просто наверное этим никогда не интерисовался пишу себе на C++ и пишу. Знаю, что BC5 и хорошо. Так не могли бы вы мне сказать какие могут быть причины того, что файл не компилируеться?

Добавлено через 2 минуты
Скомпилировал модуль, а потом саму програму. И там и там показало
Error: suma.c(5,2) Declaration terminated incorrectly

Добавлено через 4 минуты
Извиняюсь случайно в модуль добавил кое-что лишнее. Когда исправил, модуль потребовал main().
Это нормально. Сама програма потребовала, то что я писал в начале (
outoftime
║XLR8║
509 / 431 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
02.01.2010, 20:45 #8
попробуйте создать два назависимых исполняемых, файла, первый из корорых будет вызивать второй, и скопилируйте каждый из них отдельно
как передавать данные програме, надеюсь вы знаете
verzer
94 / 94 / 4
Регистрация: 29.12.2009
Сообщений: 204
02.01.2010, 20:51 #9
нашёл у себя BC 3.1 там же и этот bcw. ужас, конечно.., не знаю, зачем так над собой издеваться..?
модули тоже не смог заставить работать, только у меня ошибку другую выдаёт
вообще, классически "Unresolved external" возникает, когда линковщик не может найти подходящий .obj-файл с телом функции. попробуйте в настройках поправить пути (что-то вроде Library Directories)
Eugeniy
3119 / 1312 / 141
Регистрация: 19.12.2009
Сообщений: 1,808
02.01.2010, 22:49  [ТС] #10
Цитата Сообщение от outoftime Посмотреть сообщение
попробуйте создать два назависимых исполняемых, файла, первый из корорых будет вызивать второй, и скопилируйте каждый из них отдельно
как передавать данные програме, надеюсь вы знаете
Спасибо, но мне нужны именно модули!

Добавлено через 1 час 49 минут
Я всем премного благодарен за ответы, но увы пока не смог решить эту проблему!
Не могли бы Вы посоветовать мне литературу где хорошо освещаються модули в Си++?
Та литература, которая имееться на форуме либо не сильно затрагивает эту тематику, либо уже недоступна на файлообменнике (по крайней мере не смог её скачать).
<Norton>
Отдыхающий:)
94 / 91 / 10
Регистрация: 05.04.2009
Сообщений: 188
03.01.2010, 15:19 #11
Истолкуйте суть вашей проблемы.
Что именно размещенно у Вас в header-файле и source-файле?
Модули подключают header-файлы для доступа к сторонним модулям(поправьте, если не так)

unit1.cpp
C++
1
2
3
4
5
6
7
8
9
10
//Главный Модуль
#include <iostream>
#include "head.h"
#include <process.h>
int main()
{
    std::cout<<sum(1,2)<<std::endl;
    system("pause");
    return 0;
}
unit2.cpp
C++
1
2
3
4
5
6
7
//Объявление
int sum(int a,int b);
//Сама функция
int sum(int a,int b)
{
    return a+b;
}
head.cpp
C++
1
2
3
//Собственно Заголовок
#include "unit2.cpp"
int sum(int a,int b);
Eugeniy
3119 / 1312 / 141
Регистрация: 19.12.2009
Сообщений: 1,808
03.01.2010, 15:32  [ТС] #12
Огромное Вам спасибо. Дело в том, что я, как написано у меня в учебнике, подключал header файл к source файлу. Когда я зделал наоборот всё заработало!

Добавлено через 5 минут
Правда странно, компилируеться, но выскакивает окно с Date/Time of disk file ././fffd.odj has changed. Reload? Если перезагружаю, то мне выдает Line length exceeds editor capacity.
Я английский знаю, но понять причину этого увы не могу.
<Norton>
Отдыхающий:)
94 / 91 / 10
Регистрация: 05.04.2009
Сообщений: 188
03.01.2010, 15:49 #13
"Длина линии превышает максимально допустимую!" - что-то в этом роде он пишет.
Попробуйте выделить весь текст(Ctrl+A) и тогда увидите где у Вас линия слишком длинная( на сколько я помню, длинной она считается, если првышает 128 символов)
Eugeniy
3119 / 1312 / 141
Регистрация: 19.12.2009
Сообщений: 1,808
03.01.2010, 16:02  [ТС] #14
Весь прикол в том, что этого не может быть, сама програма состоит из 7 строчек и по длине максимум символов 10.

Добавлено через 9 минут
<Norton>, прошу прощение единственное хотел Вас поправить что в head файле перед описанием функции нужно добавить extern.
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
03.01.2010, 16:21 #15
Цитата Сообщение от Eugeniy Посмотреть сообщение
перед описанием функции нужно добавить extern.
зачем?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2010, 16:21
Привет! Вот еще темы с ответами:

Какие модули или библиотеки необходимо подгружать чтобы работать с графиками ? - C++ Builder
Здрасте . у меня вопрос . Какие модули или библиотеки необходимо подгружать чтобы работать с графиками функций?

Разбиение на модули - Visual C++
Прошу вашей помощи. Пишу цепочку классов, один наследуется у другого. В родительском классе есть статические поля. Мне надо разбить эти...

Консольное приложение и модули. В чём ошибка? - Visual C++
Такая ситуация: Visual C++ 2008 Express Edition Консольное приложение Win32 3 файла: ...

Модули - Pascal
Доброе время суток! У меня следующая проблема. Я создал два модуля в которых фигурирует тип матрица 3*3. Каждый модуль по отдельности...


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

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

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