gpt4 book ai didi

delphi - 我需要 64 位版本的 stdvcl40.dll 吗?

转载 作者:行者123 更新时间:2023-12-03 15:02:08 25 4
gpt4 key购买 nike

我将部署用 Delphi 编写的 64 位版本的 OCX。 OCX 要求 stdvcl40.dll 在目标系统中可用并注册。据我所知,我的 Delphi 安装中只有 32 位版本,但由于源代码可用,我应该能够自己创建 64 位版本。

这样做是否有必要或有优势,还是我应该坚持使用包含的版本并仅部署该版本?

编辑仅提供一点背景知识:StdVCL40.dll 主要包含一个类型库,公开 System.Win.StdVCL.pas 中声明的三个接口(interface)。该 dll 的更高版本还实现了一些处理这些接口(interface)的属性页。

删除对 stdvcl40.dll 的依赖性的结果是,这些接口(interface)(在我的例子中为 IString)在我的类型库中不再可用,并且任何引用都被 IDispatch 替换。

stdvcl40.dll 不是设计时包,它必须与以前的 Delphi 版本中的大多数 ActiveX 库一起部署。我必须部署它,否则 OCX 首先会拒绝注册。

它实际上似乎也适用于我的 OCX 的 64 位版本,可能是因为 Windows COM 足够聪明,能够发现没有 64 位版本,因此采用 32 位版本。虽然我不确定这是否是正确的方法。这就是我的问题。

最佳答案

我猜这个 DLL 仅用作类型库的存储(具有 IStrings 等的定义),至少在您的情况下是这样。然后答案是“否”,您不需要 x64 版本。当您注册此 x32 DLL 时,类型库应该可用于 x32/x64 应用程序。抱歉,我现在无法检查,所以这只是一个猜测。

更新您可以注册stdvcl40.tlb(它的大小只有3kb,因此更容易部署),然后您的OCX将依赖于“stdvcl40.tlb”而不是“stdvcl40.dll”(也许您必须取消选中DLL并从类型库编辑器的“使用”选项卡检查 TLB,但我不确定它是否必要,但在我的测试项目中我不再依赖 DLL)。

关于delphi - 我需要 64 位版本的 stdvcl40.dll 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24411096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com