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

C++

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

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

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

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

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

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

Добавлено через 1 час 49 минут
Я всем премного благодарен за ответы, но увы пока не смог решить эту проблему!
Не могли бы Вы посоветовать мне литературу где хорошо освещаються модули в Си++?
Та литература, которая имееться на форуме либо не сильно затрагивает эту тематику, либо уже недоступна на файлообменнике (по крайней мере не смог её скачать).
<Norton>
Отдыхающий:)
94 / 91 / 10
Регистрация: 05.04.2009
Сообщений: 188
03.01.2010, 15:19     Модули в C++ #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  [ТС]     Модули в C++ #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     Модули в C++ #13
"Длина линии превышает максимально допустимую!" - что-то в этом роде он пишет.
Попробуйте выделить весь текст(Ctrl+A) и тогда увидите где у Вас линия слишком длинная( на сколько я помню, длинной она считается, если првышает 128 символов)
Eugeniy
3119 / 1312 / 141
Регистрация: 19.12.2009
Сообщений: 1,808
03.01.2010, 16:02  [ТС]     Модули в C++ #14
Весь прикол в том, что этого не может быть, сама програма состоит из 7 строчек и по длине максимум символов 10.

Добавлено через 9 минут
<Norton>, прошу прощение единственное хотел Вас поправить что в head файле перед описанием функции нужно добавить extern.
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
03.01.2010, 16:21     Модули в C++ #15
Цитата Сообщение от Eugeniy Посмотреть сообщение
перед описанием функции нужно добавить extern.
зачем?
Eugeniy
3119 / 1312 / 141
Регистрация: 19.12.2009
Сообщений: 1,808
03.01.2010, 16:28  [ТС]     Модули в C++ #16
Это указывает на то, что функция реализована во внешнем файле.

Добавлено через 3 минуты
Хотя Вы знаете, я удивлен, но и без этого програма нормально работает
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
03.01.2010, 16:34     Модули в C++ #17
Цитата Сообщение от Eugeniy Посмотреть сообщение
Это указывает на то, что функция реализована во внешнем файле.
откуда такие сведения?

C++ Stardard 2003.
7.1.2 Function specifiers
Function-specifiers can be used only in function declarations.
function-specifier:
inline
virtual
explicit
как видишь - слова extern здесь нет.

extern в функциях может применяться в качестве директивы компоновки (linkage directive)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2010, 16:44     Модули в C++
Еще ссылки по теме:

Модули и текстовые файлы C++
C++ Модули. Многофайловые проекты
C++ Разбиение программы на модули!
C++ Linux Linux. Модули. Printk(.)
Codeblocks и модули C++

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

Или воспользуйтесь поиском по форуму:
Eugeniy
3119 / 1312 / 141
Регистрация: 19.12.2009
Сообщений: 1,808
03.01.2010, 16:44  [ТС]     Модули в C++ #18
Большое Вам спасибо! Я понял в чём проблема. Наш учебник, а учусь я на мехмате, написан для языка Ci у меня C++. До сих пор разницы не было, но когда я захотел реализовать модули, то столкнулся с этой проблемой не соответсвия двух языков, чего и следовало ожидать раньше. Странно, что слово extern никак не повлияло на результат. Всё-равно большое Вам всем спасибо!
Yandex
Объявления
03.01.2010, 16:44     Модули в C++
Ответ Создать тему
Опции темы

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