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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Потоки, работающие кроссплатформенно.. треды, кои используются под разными ОС 
:(
    Опции темы
Lazin
Дата 10.7.2009, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(andrew_121 @  10.7.2009,  17:40 Найти цитируемый пост)
OpenGLClass создай динамически

зачем?
Цитата(andrew_121 @  10.7.2009,  17:40 Найти цитируемый пост)
Используй libpthread

зачем?
PM MAIL Skype GTalk   Вверх
Proger10
Дата 10.7.2009, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А я кстати не понял зачем мне Qt4 предлагают smile Я её потихоньку начинал осваивать, правда в этом проекте не использую.
Пытаюсь вот бустом запустить.. Хотя пока что и без буста класс не работает smile

Добавлено через 1 минуту и 39 секунд
Я вот знаете что не пойму..
У меня вот так объявлено:

Код
int main( int argc, char** argv ) {

    OpenGLClass openGLClass;

    openGLClass::drawScene();

}

почему оно мне выдаёт такую ошибку?
Код
main.cpp:126: error: 'openGLClass' is not a class or namespace


Добавлено через 5 минут и 31 секунду
Я пытаюсь пока запустить класс без бустов и тут даже не выходит.. у меня сейчас код в таком состоянии: http://paste.org.ru/?43huh7
Код
$g++ main.cpp -lglut -lboost_thread-mt `pkg-config opencv --cflags --libs`
main.cpp: In constructor 'OpenGLClass::OpenGLClass()':
main.cpp:84: error: argument of type 'void (OpenGLClass::)()' does not match 'void (*)()'
main.cpp:85: error: argument of type 'void (OpenGLClass::)(unsigned char, int, int)' does not match 'void (*)(unsigned char, int, int)'
main.cpp:86: error: argument of type 'void (OpenGLClass::)(int, int)' does not match 'void (*)(int, int)'
main.cpp: In function 'int main(int, char**)':
main.cpp:126: error: 'openGLClass' is not a class or namespace
make: *** [all] Error 1

не подскажите ли, чего сейчас тут не так?

Добавлено через 7 минут и 2 секунды
Причём тут вообще строчки 84-86?? они вот:
-----------------------------------
glLoadIdentity();

glBegin( GL_LINES );
-----------------------------------
и что в них не так? smile

Добавлено через 12 минут и 58 секунд
Там кстати была строчка в drawScene:
boost::mutex::scoped_lock lock( io_mutex );
я её закомментил. Терь также ругается на другие строчки smile
Код
main.cpp: In constructor 'OpenGLClass::OpenGLClass()':
main.cpp:36: error: argument of type 'void (OpenGLClass::)()' does not match 'void (*)()'
main.cpp:37: error: argument of type 'void (OpenGLClass::)(unsigned char, int, int)' does not match 'void (*)(unsigned char, int, int)'
main.cpp:38: error: argument of type 'void (OpenGLClass::)(int, int)' does not match 'void (*)(int, int)'
main.cpp: In function 'int main(int, char**)':
main.cpp:124: error: 'openGLClass' is not a class or namespace
make: *** [all] Error 1

пом оно определиться не может с ошибкой...
PM MAIL   Вверх
vinick
Дата 10.7.2009, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Proger10,  в твоем коде.
Код

  glutDisplayFunc( drawScene );

drawScene не статическая функция, нельзя ее туда передавать.

Код

 openGLClass::drawScene();


Ну тут совсем неправильно, если drawScene объявить статической, то вызывать ее надо
Код

OpenGLClass::drawScene();

если не объявлять, то
Код

openGLClass.drawScene();


Вывод: объяви drawScene как статическую. 

PM MAIL ICQ Jabber   Вверх
Proger10
Дата 10.7.2009, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Понятно. Спасибо! Терь скомпилировалось smile
Объявил статисческими и handleResize, и handleKeypress..

Терь попробую с потоками..

Добавлено через 52 секунды
Кстати, у меня наоборот - сейчас функция drawScene статическая и вызвать можно только так: openGLClass.drawScene();
через двоеточие - ругается.
PM MAIL   Вверх
andrew_121
Дата 10.7.2009, 19:03 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Lazin, Просто ждал от вас этого вопроса smile 
Кроме "вопросов", по теме что-то полезное сообщите?

Это сообщение отредактировал(а) andrew_121 - 10.7.2009, 19:15


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
vinick
Дата 10.7.2009, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Proger10 @  10.7.2009,  18:55 Найти цитируемый пост)
Кстати, у меня наоборот - сейчас функция drawScene статическая и вызвать можно только так: openGLClass.drawScene();
через двоеточие - ругается. 

Если двоеточия, то надо использовать имя класса а не имя объекта.
Я настойчиво рекомендую почитать книжку по языку. Потому как то, что ты сотворил с классами - мягко говоря бред.  
PM MAIL ICQ Jabber   Вверх
Proger10
Дата 10.7.2009, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Омг ёмаё!!! Следующая проблема..

Как мне объявить:
MyOpenGLClass openGLClass;
так, чтобы она была видна из openCV?
При инициализации в openGLClass (в конструктуре) есть glutMainLoop - это глутовский вечный цикл... дальше код не идёт на выполнение smile

Добавлено через 4 минуты и 21 секунду
vinick, понимаю, что бред. Мне хочется просто заставить её работать. Хоть как.. потом я уже красоту наведу. Я же решения ещё не нашёл даже..
PM MAIL   Вверх
vinick
Дата 10.7.2009, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Proger10 @  10.7.2009,  19:13 Найти цитируемый пост)
Омг ёмаё!!! Следующая проблема..

Вернись к варианту без классов, пока у тебя не общих данных, они тут нафиг не нужны. А то ты еще больше запутаешься. Найди место в коде где вылетает SIGSEGV, а потом уже отладчиком или отладочной печатью выясни почему это происходит.
PM MAIL ICQ Jabber   Вверх
Proger10
Дата 10.7.2009, 19:24 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот дерьмо.. снова segmentation fault.
Привёл код в чувство: http://paste.org.ru/?orggqz
Но после первого нажатия клавиши, сука, вылетает... Уж зла нет.

Добавлено через 1 минуту и 41 секунду
Цитата(vinick @ 10.7.2009,  19:23)
Цитата(Proger10 @  10.7.2009,  19:13 Найти цитируемый пост)
Омг ёмаё!!! Следующая проблема..

Вернись к варианту без классов, пока у тебя не общих данных, они тут нафиг не нужны. А то ты еще больше запутаешься. Найди место в коде где вылетает SIGSEGV, а потом уже отладчиком или отладочной печатью выясни почему это происходит.

Так в том-то и дело, что не понятно. Почему-то уходит доступ к OpenGL. Почему - фиг его знает.. Причём первый раз drawScene срабатывает, а на второй раз drawScene - вылетает.

В классы я захотел выделить в надежде, что выделятся все переменные в одно место и там не будет таких ошибок... а фиг тут..

Добавлено через 3 минуты и 18 секунд
Тут ведь видите.. код простейший. Тут ошибок быть не может.. Ну.. образно smile
Мне кажется проблема в технологии распараллеливания.. Именна она делает невозможным доступ к opengl... мне так кажется.
PM MAIL   Вверх
Proger10
Дата 10.7.2009, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



То есть по сути я хочу сделать вечный цикл в котором отрисовывать в OpenGL.. больше ничего.

Добавлено через 6 минут и 51 секунду
только проблема в том, что для того, чтобы глут инициализировать нужно запустить glutMainLoop, который по сути вечный цикл и управление до моего кода не дойдёт, если поточить не буду эти два цикла (мой и glutMainLoop).
PM MAIL   Вверх
Lazin
Дата 10.7.2009, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(andrew_121 @  10.7.2009,  19:03 Найти цитируемый пост)
Lazin, Просто ждал от вас этого вопроса  
Кроме "вопросов", по теме что-то полезное сообщите?


Цитата(Lazin @  10.7.2009,  17:50 Найти цитируемый пост)
OpenGLClass создай динамически

зачем? подозреваю, что в целях обфускации кода, но не уверен... может просветите, откуда такая необходимость? smile 

Цитата(Lazin @  10.7.2009,  17:50 Найти цитируемый пост)
Используй libpthread

зачем? boost.thread на порядок проще чем pthread, ТС все еще не может скомпилировать свой код, а ты ему предлагаешь использовать pthread? smile

Добавлено через 1 минуту и 32 секунды
а glut threadsafe?
PM MAIL Skype GTalk   Вверх
Proger10
Дата 10.7.2009, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не правда! Я уже скомпилил его! Один хрен - не идёт smile я уж и так, и сяк...
PM MAIL   Вверх
Lazin
Дата 10.7.2009, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Proger10, начни последовательной программы, добейся того, что-бы твой код был прост и понятен, и самое главное - работал, а потом думай, что и как там можно распараллелить smile 
PM MAIL Skype GTalk   Вверх
Proger10
Дата 10.7.2009, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну так.. отдельные части работают отлично!
Т.е. opencv окно работает превосходно. И glut работает также превосходно.
Когда у меня возникает цикл (в opencv) (предположим что это просто пустой цикл) почему-то drawScene отваливается.
Lazin, чем плох этот код? http://paste.org.ru/?iqkord Прост.. но не работает ведь!
PM MAIL   Вверх
Proger10
Дата 10.7.2009, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Кстати, а нет ли тут людей соображающих в GLut? Походу в ней проблема.. нельзя ли убрать glutMainLoop? Всмысле, чтобы при этом осталась работоспособсность проекта smile
PM MAIL   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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