Delphi Tokyo 10.2.2 - Win XP 运行时不加载包

Delphi Tokyo 10.2.2 - Packages do not load at runtime in Win XP

我正在使用新的 Delphi Tokyo 10.2.2,在我的例子中,我使用了在 运行 时间加载的包。

即使做一个简单的例子并请求 EXE 仅加载 RTL 单元也会发生 运行 时间错误,仅在 Windows XP 操作系统:

The procedure entry point inet_ntop could not be located in the dynamic link library WS2_32.dll.

使用 Delphi Tokyo 10.2.1 问题没有发生。

有什么想法吗?

inet_ntop() 已添加到 Windows Vista 中的 Winsock,它在 XP 中不存在。

显然,Embarcadero 已将新代码添加到 10.2.2 中的 RTL,该代码静态调用 inet_ntop() 而不是动态调用。 10.2.1 中的 RTL 中不存在的代码。这就是在 XP 上加载 10.2.2 的 RTL 包时发生错误的原因。

对此你无能为力。如果您必须 运行 在 XP 上使用您的应用程序(Embarcadero 在 XE3 中放弃了支持),那么您就不能使用 10.2.2 RTL。

全部,

我能够通过创建一个嵌入了所有必要单元的包来解决问题。

然后是引用这个新包的可执行文件和其他 BPL(模块)。

它在 win XP 中再次运行!

感谢大家的支持

我有一个新的项目代理函数,用于原始 Windows XP WS2_32.dll 的所有导出函数,包括 Windows XP WS2_32.dll 中缺少的 inet_pton .

欺骗Windows XP应用进程认为inet_pton可用,不提示任何错误。

存储库:https://github.com/ccy/WS2_32_XP