1

我正在使用新的Delphi Tokyo 10.2.2,就我而言,我使用的是在运行时加载的包。

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

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

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

任何想法?

4

3 回答 3

1

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

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

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

于 2018-01-16T03:24:14.027 回答
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。

于 2018-01-06T02:42:59.363 回答
0

全部,

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

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

它在win XP中再次起作用!

谢谢大家的支持

于 2018-01-09T15:54:50.053 回答