6

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

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

编辑 只是提供一点背景:StdVCL40.dll 主要包含一个类型库,暴露在 System.Win.StdVCL.pas 中声明的三个接口。此 dll 的更高版本还实现了一些处理这些接口的属性页。

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

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

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

4

1 回答 1

2

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

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

于 2014-06-25T18:11:06.567 回答