|
답변 감사합니다.
저는 C++ Builder 6.0을 사용하는데요. UDP 통신을 하고 쓰레드를 이용하려고 합니다.
아래는 파일의 한 부분입니다.
헤더 파일에
HANDLE hThread[MAX_CLIENT];
SOCKET clSock;
struct sockaddr_in serv_addr[MAX_CLIENT];
struct sockaddr_in from_addr[MAX_CLIENT];
클래스 밖에 아래 함수 선언하구요.
DWORD WINAPI WorkerThread(int nsock);
cpp 파일 내용입니다.
#include "Def.h" // 이 파일에 #include <process.h> 있습니다.
#include "untMain.h"
#include "SockUtil.h"
#include "untDebug.h"
HANDLE hMutex;
void cSockUtil::open_sock()
{
int i;
WSADATA wsaData;
if( WSAStartup(MAKEWORD(2, 0), &wsaData) != 0)
frmDebug->Debug_Display("초기화 Error!");
clSock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
if(clSock == INVALID_SOCKET)
frmDebug->Debug_Display("UDP 소켓 생성 Error!");
hMutex = CreateMutex(NULL, FALSE, NULL);
// 접속한 Server 주소 & Port
for( i = 0; i < MAX_CLIENT; i++ )
{
serv_addr[i].sin_family = AF_INET;
serv_addr[i].sin_addr.s_addr = inet_addr( frmMain->str_IP[i].c_str() );
serv_addr[i].sin_port = htons( frmMain->n_Port[i] );
}
for(i = 0; i < MAX_CLIENT; i++) // 쓰레드 기지국 갯수에 따라 조정
{
// 아래 부분에서 에러 발생합니다.
hThread[i] = (HANDLE)_beginthreadex(NULL, 0, (unsigned int(__stdcall*)(void*))WorkerThread,
(void*)(int)i, 0, NULL);
if( WaitForSingleObject(hThread[i], 10) == WAIT_FAILED)
{
str_error = "쓰레드 Wait 오류 [ " + frmMain->str_IP[i] + " ]";
frmDebug->Debug_Display(str_error);
}
}
}
DWORD WINAPI WorkerThread(int nsock)
{
Sleep(1);
WaitForSingleObject(hMutex, INFINITE);
// 송, 수신 함수 호출등 작업
ReleaseMutex(hMutex);
}
F1을 클릭해서 예제에 있는 소스를 사용해봤는데 그래도 같은 에러가 발생합니다.
hThreads[i] = (HANDLE)_beginthreadex(&sa, 4096, threadMain, (void*)i, CREATE_SUSPENDED, threadId);
물론 threadMain 함수 선언하고 hThreads, sa, threadId 도 예제와 똑같이 해서 컴파일 했습니다.
그리고 참고로 전체 Build로 컴파일 하지않고 Compile Unit로 했습니다.
[ 소스 전체 완료되지 않아서 Build로 하면 다른곳에 에러가 나서 Compile Unit로 했습니다.]
인자형이 잘못된 곳이 있는지요?
김태선 님이 쓰신 글 :
: _beginthreadex는 호출인자가 많으니
: 정확하게 형을 맞게 지정했는지 살펴보세요.
: 형이 하나라도 틀리면
: 그런 에러를 냅니다.
:
: unitas 님이 쓰신 글 :
: : 컴파일을 하면
: : E2268 Call to undefined function '_beginthreadex' 에러가 납니다.
: :
: : 인크루드 아래를 추가해도 계속해서 _beginthreadex 부분에 에러가 나는데 원인을 모르겠습니다.
: : #include <process.h>
: :
: : 답변 부탁드립니다.
|