프로그래밍/Delphi
64비트에서 WSAAccept 오동작 문제
ryujt
2012. 6. 29. 17:54
var NewSocket : TSocket; pAddr : PSockAddr; pAddrLen : PINT; begin New(pAddr); New(pAddrLen); NewSocket := WSAAccept(Socket, pAddr, pAddrLen, nil, 0);
위와 같은 코드가 64비트에서는 작동하지 않습니다. 잘못된 포인터 어쩌고 하는 에러가 닙니다. 32비트에서는 잘 돌아갑니다 ㅠ.ㅠ
PINT64 및 다른 방법으로 메모리 공간을 충분히 확보해 줘도 마찬가지 입니다. packed record 도 한 번 시도 해보고 여러 가지 다른 방법도 찾아봤지만 모두 실패 ㅠ.ㅠ
NewSocket := WSAAccept(Socket, nil, nil, nil, 0);
위의 코드는 32비트와 64비트에서 모두 잘 작동합니다. 이유는 아직 모르겠습니다 ^^;
일단 인디에서는 문제가 없으니, 거기서부터 힌트를 찾아야 겠습니다. 당장은 바쁜 일이 있어서 32비트로 작업을 진행하다가 해결책을 찾아봐야 겠습니다.