Версия для печати темы
Форум на CrossPlatform.RU _ Другие библиотеки _ Qt winapi потоки
Автор: mycoding 17.11.2009, 18:01
Пытаюсь запустить потоки на qt используя winapi.
Но не работает выдаёт ошибку вот код
void MainWindow::createthreads()
{
stop=0;
for(int i=0;i<5;i++)
phils[i].eat=100;
for(int i=0;i<5;i++)
{
hThread[i] = CreateThread(NULL, 0,RUN_THREADS, i, 0,
&IDThread[i]);
if (hThread[i] == NULL)
{std::cout << "Error";std::cout << GetLastError();}
}
}
DWORD WINAPI MainWindow::RUN_THREADS(int i)
{
int n=(int)i;
while(1)
{
think(n);
take_forks_get_back_forks(n);
}
return 0;
а вот ошибка
C:/Qt-progi/Programming/laba_5/20/mainwindow.cpp:215: error: argument of type `DWORD (MainWindow::)(void*)' does not match `DWORD (*)(void*)'
Прочитал одну статью здесь по такому же вопросу на этом форуме, но там не написано как это решать.
Автор: Litkevich Yuriy 17.11.2009, 18:15
Цитата(mycoding @ 17.11.2009, 21:01)
argument of type `DWORD (MainWindow:: )(void*)' does not match `DWORD (*)(void*)
ну собственно компиллер тебе явно говорит в чём ошибка:
Цитата
аргумент типа `DWORD (MainWindow::)(void*)' не соответствует `DWORD (*)(void*)
Цитата(mycoding @ 17.11.2009, 21:01)
hThread[i] = CreateThread(NULL, 0,RUN_THREADS, i, 0,
&IDThread[i]);
что такое RUN_THREADS?
Автор: mycoding 17.11.2009, 18:48
Если есть возможность гляньте прогу вот
сорс http://dl.dropbox.com/u/2536325/qt_proga.rar
В winapi всё в таком же виде работает...
Ой, ссылка не рабочая
вот рабочая http://moc-081.narod.ru/qt_proga.rar
Автор: Litkevich Yuriy 17.11.2009, 18:48
mycoding, ты лучше на вопросы отвечай, а то людям будет не интересно тему читать
Автор: mycoding 17.11.2009, 18:54
А я потом и сорс выложу, он такой интересный )))
CODE
void MainWindow::createthreads()
{ DWORD ID1;
stop=0;
for(int i=0;i<5;i++)
phils[i].eat=100;
for(int i=0;i<5;i++)
{
hThread[i] = CreateThread(NULL, 0,RUN_THREADS, i, 0,
&IDThread[i]);
if (hThread[i] == NULL)
{std::cout << "Error";std::cout << GetLastError();}
}
}
DWORD WINAPI MainWindow::RUN_THREADS(int i)
{
int n=(int)i;
while(1)
{
think(n);
take_forks_get_back_forks(n);
}
return 0;
}
RUN_TREADS это запуск потока номер i
Автор: Litkevich Yuriy 17.11.2009, 19:05
Цитата(mycoding @ 17.11.2009, 21:54)
RUN_TREADS это запуск потока номер i
если мне не изменяет память это указатель на функцию, где у тебя функция RUN_TREADS?
из твоего кода я вижу только то, что видит компилятор т.е. функцию
MainWindow::RUN_THREADS(int i)
Автор: mycoding 17.11.2009, 19:11
Ну я этот вариант нам препод дал а я его уже реализую , мне тоже не нравится как сделано.
Автор: Litkevich Yuriy 17.11.2009, 20:08
Цитата(mycoding @ 17.11.2009, 22:11)
мне тоже не нравится как сделано.
опиши свой вариант
Автор: SABROG 17.11.2009, 20:13
Я так понимаю он пытается передать указатель на метод RUN_THREADS. Этот метод вроде бы надо делать статическим или глобальным.
Автор: Elfinit 17.11.2009, 20:28
А каким боком это к Qt относится??
Автор: Litkevich Yuriy 17.11.2009, 20:31
Цитата(Elfinit @ 17.11.2009, 23:28)
А каким боком это к Qt относится??
вроде как тем, что он в приложении на Qt пытается WinAPI использовать
Автор: mycoding 17.11.2009, 20:40
Litkevich Yuriy, а моего варианта нет )))
Только то что препод дал
Я просто пока не умею потоки делать на qt
поэтому делаю как получается )))
Автор: Litkevich Yuriy 17.11.2009, 20:42
тема перезжает из Qt, т.к. для начала надо с Си/Си++ разобратся.
mycoding, давай описание (объявление) функции CreateThread, я его не помню.
Разберём всё пополочкам
Автор: mycoding 17.11.2009, 20:48
Я же весь код код кинул , что ещё могу дать ?
Автор: Litkevich Yuriy 17.11.2009, 20:49
Цитата(mycoding @ 17.11.2009, 23:48)
что ещё могу дать ?
то, что я попросил
Автор: mycoding 17.11.2009, 21:29
Цитата(Litkevich Yuriy @ 17.11.2009, 20:49)
mycoding, давай описание (объявление) функции CreateThread, я его не помню.
Разберём всё пополочкам
А где я его возьму , я и сам без этого описания всё делаю
Автор: Litkevich Yuriy 17.11.2009, 22:10
mycoding, в документации по WinAPI.
Цитата(mycoding @ 18.11.2009, 0:29)
я и сам без этого описания всё делаю
потому и получаешь ошибки при компиляции
Автор: mycoding 18.11.2009, 0:07
Ну а почему на codeblockse тоже самое реализованиое через просто winapi работает?
Автор: Litkevich Yuriy 18.11.2009, 9:06
Цитата(mycoding @ 18.11.2009, 3:07)
на codeblockse тоже самое
не знаю что это такое, еслиб ты отвечал по существу на задаваемые тебе вопросы, уже бы получил работоспособный код.
Автор: mycoding 19.11.2009, 8:58
Короче прога получилось если нужен сорс вот можете взять здесь moc-081.narod.ru/data/oco/oco_3_1_qt.rar
СДелана благодаря очень классному парнишке с этого сайта, который не пожелел время и помог мне. Написана с помощью потоков winapi, если у кого есть желание помочь с потоками на qt
вот моя ася 395712335.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)