在 64 位 Delphi 程序中创建 OleObject?

CreateOleObject in a 64-bit Delphi program?

在Delphi XE7 64位 VCL程序中,找不到单元Vcl.OleAuto

[dcc64 Fatal Error] Unit1.pas(33): F1026 File not found: 'Vcl.OleAuto.dcu'

虽然它在 32 位 程序中没有问题:

uses
  Vcl.OleAuto;
...
FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');

那么如何在 64 位 程序中使用 CreateOleObject

虽然 Vcl.OleAuto 的源代码仍然提供,但 64 位 lib 目录不包含 Vcl.OleAuto.dcu。相反,您应该使用 System.Win.ComObj and/or System.Win.ComServ。请注意,Vcl.OleAuto 的来源将该单元标记为已弃用,并告诉您应该使用什么。

如果我们查看 Vcl.OleAuto 的源代码,我们可以找到一些尚未移植的 32 位 asm 代码。据推测,Embarcadero 决定不将其移植到 64 位,因为该单元已被弃用。