2017-04-24 94 views
-2

这很复杂,所以我可能会马上丢失一些。很久以前,我们有一个32位的ActiveX控件从供应商购买,用于使用Visual C++ 6.0开发的内部程序。现在,我们将使用Visual Studio 2013更新我们的程序,以拥有32位和64位平台。供应商不再支持C++,也没有这个activex文件的64位版本。我能够使用Visual Studio 2013 32位构建软件,并且activex控件完美工作。但是,由于平台的差异,使用64位软件构建软件时,除了需要activex控制的部分以外,所有软件都可以正常工作。 现在我运行了OLE/COM对象查看器(OleView.exe)并成功创建了一个来自activex ocx文件的IDL文件。然后,我能够编译IDL文件(经过一些调试)来创建* _h.h和* _i.c文件。 问题:是否有一种简单而优雅的方式来获取这些文件并在64位平台中重建activex?32位* .ocx文件将IDL文件转换为* _h.h和* _i.c文件转换为64位* .ocx文件

+0

你知道这些只是关于接口的文件吗?重建一个ActiveX控件需要所有其他的源文件。你应该问为什么你真的需要一个64位版本?你是否需要增加的资源和记忆,还是仅仅是营销,或者是一些老板的屁股?你不能简单地重新编译这些文件到64位。如果您使用VS 2013(并询问为什么不2017),那么您需要从OCX中提取类型库,将其保存为.TLB文件,然后#import到您的项目中。 Google for DllSurrogate。无论您的32位OCX必须在32位进程中运行。 –

+0

@JoeWillcoxson,谢谢你的评论。尽管该项目仅在内部使用,但我们需要来自请求我们移至64位的客户的DLL。我不知道为什么VS 2013被选中。如果您创建的答案表明无法使用我提供的参数完成,我会接受它。 – jackson80

回答

0

您不能只重新编译组成OCX接口的头文件和.c文件以创建64位OCX。 OCX由接口文件和许多其他文件组成,这些文件都是该控件的实现。试图按照你的方式去做是行不通的。