J'ai un problème avec un projet Delphi 2009: Il ne peut pas initialiser Indy 10! Ce code a bien fonctionné avant Delphi 2007 (bien que nous ayons pu utiliser une ancienne révision d'Indy, mais je suppose que cela n'a pas grand chose à voir avec ça);Pourquoi Indy 10 ne peut-il pas s'initialiser?
L'appel initial à IdWinsock2.InitializeWinSock(), soulève cette exception (avec le code d'erreur 998):
Project EAServer.exe raised exception class EIdWinsockStubError with message
'Error on loading Winsock2 library (WS2\_32.DLL): Invalid access to memory location'.
Mais ws2_32.dll est dans C: \ Windows \ System32 Allright, avec ces détails de la version:
File Version : 5.1.2600.5512 (xpsp.080413-0852)
Description : Windows Socket 2.0 32-Bit DLL
Copyright : © Microsoft Corporation. All rights reserved.
(cela montre que je suis sous WinXP btw). La chose idiote est, que lorsque je regarde le processus lui-même (en utilisant "Process Explorer"), je peux voir que le processus a déjà ouvert cette DLL. La raison "WS2_32.DLL" est déjà chargée, semble être parce que nous utilisons aussi l'unité RTL Winsock.pas dans ce projet. Cette unité est liée statiquement à "wsock32.dll", qui a une dépendance sur WS2_32.DLL, donc là.
Est-ce que quelqu'un sait pourquoi ce code a bien fonctionné avant (dans Delphi 2007), et maintenant (dans Delphi 2009) il se brise soudainement?
Et est-ce l'incapacité de rouvrir la connaissance commune ws2_32 dll, ou est-il vraiment quelque chose de mal ici? (J'ai vérifié: je n'ai qu'une version de ces DLL présentes sur mon système).
Mieux encore: Quelqu'un peut-il m'aider à résoudre ce problème?
Avez-vous exécuté ProcMon ou FileMon en passant ces lignes dans Indy? Pouvez-vous écrire un programme court et simple qui reproduit le problème au minimum? Le même problème se produit-il sur toutes les machines ou sur une seule machine? –
Ouais, ça arrive aussi sur d'autres postes de travail. Je vais essayer de reproduire ce comportement dans une petite application de test, pour identifier quel facteur est responsable de cela. – PatrickvL