我将部署用Delphi编写的OCX的64位版本。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位版本。尽管我不确定这是否可行。因此,我的问题。
我想至少在您的情况下,此DLL仅用作类型库(带有IStrings的定义)的存储。然后答案是“否”,您不需要x64版本。当您注册此x32 DLL时,两个x32 / x64应用程序都应该可以使用类型库。抱歉,我现在无法检查,因此只是一个猜测。
更新您可以注册stdvcl40.tlb(大小仅为3kb,因此更容易部署),然后您的OCX将依靠“ stdvcl40.tlb”而不是“ stdvcl40.dll”(也许您必须取消选中DLL)并从类型库编辑器的“使用”选项卡中检查TLB,但我不确定这是必需的,但在我的测试项目中,我不再对DLL有依赖关系。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句