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