当前位置: 首页 > 知识库问答 >
问题:

64位Delphi程序中的CreateOleObject?

章哲彦
2023-03-14

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

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

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

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

共有1个答案

吴浩皛
2023-03-14

虽然仍然提供vcl.oleauto的源代码,但64位lib目录不包括vcl.oleauto.dcu。您应该使用system.win.comobj和/或system.win.comserv。请注意,vcl.oleauto的源代码将该单元标记为不推荐使用,并告诉您应该使用什么。

如果我们查看vcl.oleauto的源代码,我们可以找到一些尚未移植的32位asm代码。可能是因为不推荐使用该单元,所以Enbarcadero决定不将其端口设置为64位。

 类似资料:
  • 问题内容: 我有一个32位.so二进制库,我必须生成使用它的64位程序。有没有办法包装或转换它,使其可以与64位程序一起使用? 问题答案: 不能。您不能直接链接到64位程序内部的32位代码。 最好的选择是编译一个可以在64位平台上运行的32位(独立)程序(使用ia32),然后使用一种进程间通信的形式从64位程序与其进行通信。

  • 问题内容: 我从Linux 64位汇编程序访问进程命令行时遇到问题。为了用最少的代码重现该代码,我制作了一个32位程序,该程序打印程序名的前5个字符: 该程序正在运行。当我将其转换为64位并在Linux 64上运行时,它不会显示任何内容: 我的错误在哪里? 问题答案: 您正在将正确的地址加载到中。 然后调用32位syscall接口。这会将地址截断为32位,这使它不正确。(如果您使用调试器并在第一个

  • 我使用SIMD创建了一个64位*64位到128位的函数。目前我已经使用SSE2(实际上是SSE4.1)实现了它。这意味着它同时生产两个64b*64b到128b的产品。同样的想法可以扩展到AVX2或AVX512,同时提供四个或八个64b*64到128b的产品。我的算法基于http://www.hackersdelight.org/hdcodetxt/muldws.c.txt 该算法执行一次无符号乘法

  • 问题内容: 我有一个专有程序,试图在64位系统上使用。 当我启动安装程序时,它可以正常运行,但是在尝试更新自身并编译一些模块之后,它无法加载它们。 我怀疑这是因为它正在使用gcc,而gcc试图将它们编译为64位系统,因此该程序无法使用这些模块。 是否有任何方法(一些环境变量或类似的东西)强制gcc为32位平台执行所有操作。32位chroot可以工作吗? 问题答案: 您需要使GCC使用该标志。 您可

  • 问题内容: 在64位计算机上,Java中的int大小是32位还是64位? 问题答案: 32位。这是Java语言的功能之一,整数的大小不会随基础计算机而变化。请参阅规范的相关部分。