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

时间:2014-06-25 14:14:50

标签: 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位版本。虽然我不确定这是否可行。因此,我的问题。

1 个答案:

答案 0 :(得分:2)

我想这个DLL仅用作类型库的存储(带有IStrings等的定义),至少在你的情况下。然后回答是#34; NO",你不需要x64版本。注册此x32 DLL时,类型库应该可用于x32 / x64应用程序。对不起,我现在无法检查,所以这只是猜测。

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