Delphi Tokyo 10.2.2 - 在Win XP中,程序包不会在运行时加载

时间:2018-01-04 13:37:14

标签: delphi windows-xp inet-ntop

我正在使用新的 Delphi Tokyo 10.2.2 ,在我的情况下,我使用的是在运行时加载的包。

即使是一个简单的示例并且请求EXE仅加载RTL单元也会出现运行时错误,仅在 Windows XP 操作系统上出现:

  

无法在动态链接库 WS2_32.dll 中找到过程入口点 inet_ntop

使用 Delphi Tokyo 10.2.1 ,问题不会发生。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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了。

答案 2 :(得分:0)

所有

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

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

它在win XP中再次运作!

谢谢大家的支持