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

Uwe*_*abe 6 delphi delphi-xe6

我将部署一个用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位版本.虽然我不确定这是否可行.因此我的问题.

And*_*tyn 2

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

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