Delphi 2009 프로젝트에 문제가 있습니다. Indy 10을 초기화 할 수 없습니다! Delphi 2007에서이 코드는 정상적으로 작동했습니다 (이전 버전의 Indy를 사용하고 있었을 지 모르지만 그와 관련이별로 없습니다).인디 10을 초기화 할 수없는 이유는 무엇입니까?
IdWinsock2.InitializeWinSock()에 대한 초기 호출은, (오류 코드 998 포함)이 예외가 발생합니다 :
Project EAServer.exe raised exception class EIdWinsockStubError with message
'Error on loading Winsock2 library (WS2\_32.DLL): Invalid access to memory location'.
을하지만 C에 WS2_32.DLL입니다 : \ WINDOWS \ system32를 무사,이 버전의 세부 사항 :
File Version : 5.1.2600.5512 (xpsp.080413-0852)
Description : Windows Socket 2.0 32-Bit DLL
Copyright : © Microsoft Corporation. All rights reserved.
(이것은 WinXP btw입니다.)
"프로세스 탐색기"를 사용하여 프로세스 자체를 보면 프로세스가 이미이 DLL이 열려있는 것을 볼 수 있습니다. "WS2_32.DLL"이 이미로드 된 이유는이 프로젝트에서도 RTL 유닛 Winsock.pas를 사용하고 있기 때문인 것으로 보입니다. 이 장치는 WS2_32.DLL에 종속되어있는 "wsock32.dll"에 정적으로 링크되어 있으므로 거기에 있습니다.
누구든지이 코드가 (Delphi 2007에서) 잘 작동하는 이유를 아는 사람 있습니까? (Delphi 2009에서) 갑자기 중단 되니?
그리고 ws2_32 dll 일반 지식을 다시 열 수 없습니까? 아니면 여기에 정말로 잘못된 것이 있습니까? (나는 확인했다. 나는이 DLL이 내 시스템에 1 버전 밖에 없다.)
더 나은 점은 누구나 해결할 수 있습니까?
ProyMon 또는 FileMon을 실행하여 Indy에서이 단계를 건너 뛰었습니까? 문제를 최소한으로 재생하는 간단하고 간단한 프로그램을 작성할 수 있습니까? 모든 컴퓨터에서 동일한 문제가 발생합니까 아니면 하나의 컴퓨터에서만 발생합니까? –
네, 다른 워크 스테이션에서도 발생합니다. 작은 테스트 응용 프로그램에서이 동작을 재현하여 어떤 요소가 이에 영향을 미치는지 정확히 알려줍니다. – PatrickvL