![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
AlexKib |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 13.2.2015 Репутация: нет Всего: нет |
Здравствуйте!
Программа, написанная в DEV CPP "не видит" функцию в пользовательском модуле, если использую директиву #include "unit.h". В модуле прописано использование этого заголовочного файла. Если использую директиву #include "unit.cpp", функция доступна. Если в заголовочном файл описываю класс со встроенными методами, то все нормально, методы доступны. При объявлении методов, определяемых вне класса, та же история, что и с обычными функциями. Пожалуйста, подскажите, в чем проблема? |
|||
|
||||
Guinness |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 21.6.2009 Где: Зеленоград Репутация: 2 Всего: 10 |
Покажите код. Где и как объявляется, где и как используется. И текст ошибки, выведенный компилятором, будьте добры.
|
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
А Вы файлы исходников (unit.cpp etc) компилируете и прилинковываете к своей программе? -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
AlexKib |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 13.2.2015 Репутация: нет Всего: нет |
Пример формальный, я проверял работу с пользовательским модулем.
//основная программа #include <iostream> #include<stdio.h> #include "U.h" /* run this program using the console pauser or add your own getch, system("pause") or input loop */ // int main(int argc, char** argv) { using namespace std; a n; int b=2; cout<<my(b)<<endl; cout<<n.hello("Hello"); //getchar(); return 0; } //заголовочный файл U.h #ifndef U_H #define U_H int my(int i); class a { public: char * hello ( char *s); }; #endif //модуль #include "U.h" int my(int i) { return i; } char* a::hello(char *s) { return s; } Добавлено через 9 минут и 20 секунд Сообщения об ошибках C:\Users\admin\AppData\Local\Temp\cc1sifrX.o main.cpp:(.text+0x24): undefined reference to `my(int)' C:\Users\admin\AppData\Local\Temp\cc1sifrX.o main.cpp:(.text+0x56): undefined reference to `a::hello(char*)' |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
||||
|
||||
AlexKib |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 13.2.2015 Репутация: нет Всего: нет |
Как это не добавлен, когда есть директива #include. Тогда бы сообщение об ошибке было бы другое - неизвестный файл.
Если в директиве прописываю не заголовочный файл, а сам модуль, то функции доступны. ![]() |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Этого недостаточно. Код модуля (файл, с расширением cpp или cc или cxx - на выбор) должен быть добавлен в проект в DEV CPP. Если у вас проекта нет, то создайте, иначе работать не будет. (Ну или сделайте #include "....cpp" в вашем main.cpp - но это грязный хак) |
|||
|
||||
AlexKib |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 13.2.2015 Репутация: нет Всего: нет |
Все понял. Спасибо.
Исправил, все работает! Это сообщение отредактировал(а) AlexKib - 16.2.2015, 19:12 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |