![]() |
|
Модераторы: xvr |
![]()
|
|
| Brain |
|
||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 10.12.2006 Где: Россия, Новочерка сск Репутация: нет Всего: нет |
Здравствуйте.
Проблемы в следующем: имеется main.cpp, OpenGLWindow.cpp, OpenGLWindow.h И собственноручно сделанный makefile. OpenGLWindow.cpp и OpenGLWindow.h - это класс. Вот листинги: main.cpp
OpenGLWindow.h
OpenGLWindow.cpp
Makefile
Прикомпиляции выдает ошибки
Что происходит? PS: Если закомментировать в main.cpp и OpenGLWindow.cpp метод void a(void) все компилится нормально. |
||||||||||
|
|||||||||||
| smalcom |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 494 Регистрация: 16.10.2004 Где: Dnepr Репутация: нет Всего: 7 |
1. #include <stdio.h> перемести из хедера в код
2. #include <stdio.h> ---> #include <stdio> 3. -I/usr/include -------------------- What DA F...??? |
|||
|
||||
| Brain |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 10.12.2006 Где: Россия, Новочерка сск Репутация: нет Всего: нет |
Проблема не в printf, а в том что OpenGLWindow.cpp не видит OpenGLWindow.h.
Если вставить в header переменную, например:
Все нормально. Но если попробовать ее использовать в cpp-файле:
То при build'е ничего не получится:
А она обьявлена в header'е. Вот так вот. |
||||||
|
|||||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 5 Всего: 134 |
не воспризводится на mingw'е.
На время убери из header'а OpenGLWindow.h #include <stdio.h> и сделай g++ -E -Wall -c -g -I. OpenGLWindow.cpp -o ogl.i и приведи сюда листинг ogl.i. кстати какая версия gcc?
Все три совета бесполезны. 1) header подключается из кода 2) stdio нет такого хедера вообще. есть cstdio. но если бы stdio.h не находился то компилер бы на это ругался, мы этого не видим 3) -I не переписывает дефолтовые инклюды Это сообщение отредактировал(а) Mayk - 4.9.2008, 12:14 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| Imple |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1546 Регистрация: 14.9.2007 Где: Алма-Ата Репутация: нет Всего: 87 |
-------------------- Не шалю, никого не трогаю, починяю сервер. |
|||
|
||||
| Brain |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 10.12.2006 Где: Россия, Новочерка сск Репутация: нет Всего: нет |
Mayk, вот версия gcc
4.2.3 вроде не такая сарая А код ogl.i чет большой очень(968 строк), но ошибку в OpenGLWindow.cpp не выдает. Это сообщение отредактировал(а) Brain - 4.9.2008, 19:22 |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 5 Всего: 134 |
вообще то он не может быть большим если все лишние инклюды(читай: stdio.h) ты в нем порезал, так как каждый из привденных тут файлов содержит <50 строк. посмотри что у него там внутри (предварительно грохнув все пустые строки в нём), может что нить подозрительное найдётся. попробуй выкинуть весь мусор [типа #1 "openglwine.h"] из ogl.i, скомпилировать его и посмотреть на ошибки. убунтвоский gcc 4.2.3 ошибку не воспроизводит. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| Brain |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 10.12.2006 Где: Россия, Новочерка сск Репутация: нет Всего: нет |
Mayk, вот последние несколько строк в ogl.i :
Вроде все есть... |
|||
|
||||
| Brain |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 10.12.2006 Где: Россия, Новочерка сск Репутация: нет Всего: нет |
Нашел, переделал, вот безо всякошо мусора...
|
|||
|
||||
| Brain |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 10.12.2006 Где: Россия, Новочерка сск Репутация: нет Всего: нет |
Разобрался!
Проблема была не в makefile... Eclipse при генерации header'а вставляет директивы
Поэтому cpp-файл не видел h-файл. Удаляем эти три строки и все работает. Вот и все! |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 1 Всего: 60 |
нифига ты не разобрался. Эти директивы нужны. Нужно не удалять их, а просто изменить OPENGLWINDOW_H_ на что-нибудь свое, потому как такой define где-то ранее уже есть, а еще лучше переименовать твои OpenGLWindow.h и OpenGLWindow.cpp потому как судя по твоему решению файлы с таким именем еще где-то есть |
|||
|
||||
| Brain |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 10.12.2006 Где: Россия, Новочерка сск Репутация: нет Всего: нет |
Fazil6, нет, таких файлов точно в каталоге программы нету. Я конечно понимаю что эти директивы не позволяют несколько раз подгружать h-файл, но без них оно хотябы работает.
Только почему, если он уже подгрузил .h-файл, не видит методов класса? |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 1 Всего: 60 |
OPENGLWINDOW_H_ уже раньше определен и поэтому твой h файл с директивами не читается. Если файла нет в твоем каталоге программы, то это не значит, что его нет в самой библиотеке. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |