我有一个 Delphi 2009 项目的问题:它无法初始化 Indy 10!这段代码在 Delphi 2007 之前运行良好(尽管我们可能一直在使用旧版本的 Indy,但我怀疑这与它没有太大关系);
对 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'.
但是 ws2_32.dll 位于 C:\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 顺便说一句)。
愚蠢的是,当我查看进程本身时(使用“进程资源管理器”),我可以看到进程已经打开了这个 DLL。“WS2_32.DLL”已经加载的原因,似乎是因为我们在这个项目中也使用了RTL单元Winsock.pas。这个单元静态链接到“wsock32.dll”,它依赖于WS2_32.DLL,所以在那里。
有谁知道为什么这段代码之前(在 Delphi 2007 中)运行良好,而现在(在 Delphi 2009 中)它突然中断了?
而且这个是无法重新打开ws2_32 dll常识,还是这里真的有什么问题?(我确实检查过:我的系统上只有这些 DLL 的 1 个版本)。
更好的是:谁能帮我解决这个问题?