在 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 位,因为该单元已被弃用。
在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 位,因为该单元已被弃用。