2012-06-03 1 views
0

Это мой первый случай с окнами. Я попытался создать поток, но я не могу скомпилировать свой код.C++ - Ошибка создания CreateThread

Это часть моего кода:

WORD _tid; 
HANDLE readerThread= CreateThread(0,0,readFromPort,0,0,&_tid); 
DWORD WINAPI readFromPort(LPVOID lpParam){} 

Я также попытался:

LPDWORD_tid; 
HANDLE readerThread= CreateThread(0,0,readFromPort,0,0,_tid); 
DWORD WINAPI readFromPort(LPVOID lpParam){} 

Ни скомпилирован. onyone знает, в чем проблема?

(я использую Windows XP)

спасибо.

+1

хорошо, что ошибка? Вы должны сообщить нам об этом. и лучше простой пример кода – RolandXu

+0

Пожалуйста, используйте '_beginthreadex' вместо' CreateThread' (если вы используете библиотеку CRT, которую вы обычно неосознанно делаете). – demorge

ответ

2

хорошо, не знаю, что у вас есть ошибка. Но может обеспечить хороший пример для вас

#include "windows.h" 
DWORD WINAPI readFromPort(LPVOID lpParam){return 0;} 
int _tmain(int argc, _TCHAR* argv[]) 
{ 
    DWORD _tid; 
    HANDLE readerThread= CreateThread(0,0,readFromPort,0,0,&_tid); 
    return 0; 
} 

разницу с вашими:

  1. _tid является DWORD, не WORD.

  2. readFromPort возвращает значение 0.

+0

спасибо. это сработало. – kakush

0

Ну, было бы неплохо, если бы вы предоставили минимальный пример кода и, по крайней мере, ошибку компиляции. Но хорошо, я буду притворяться компилятором. Если предположить, что ваш фрагмент кода внутри функции, то есть объявление функции там:

DWORD WINAPI readFromPort(LPVOID lpParam){} 

Я считаю, что это завинчивания вас. Вы должны объявлять/определять функции вне области действия другой функции.

Кроме того, функция readFromPort объявляется после вызова CreateThread, где он ссылается как параметр. Таким образом, это не сработает, даже если вы поместите все это в глобальную область (что само по себе плохо).

1

Позвольте мне угадать: readFromPort должен вернуть значение?

В следующий раз, пожалуйста, добавьте также и ошибку.