Visual c++ 如何将vb6转换为visual c++;本机代码?

Visual c++ 如何将vb6转换为visual c++;本机代码?,visual-c++,vb6,Visual C++,Vb6,我们有一个客户希望将大量VB6项目转换为VC++本机代码。我想知道是否有任何工具可用于此类转换 我们尝试了转换,但产生了大量编译错误。该工具将所有cpp项目创建为“exe”,而许多源VB6项目是“activex dll” VB6项目如何映射到VC++项目?例如,“activex dll”是否映射到vc++ATL项目?我们应该注意什么?如果你能分享你的经验,我们将不胜感激 (是的,我们的第一个反应是建议转换为VB.NET/C#,但该程序需要在没有安装.NET framework的机器上运行,并且还

我们有一个客户希望将大量VB6项目转换为VC++本机代码。我想知道是否有任何工具可用于此类转换

我们尝试了转换,但产生了大量编译错误。该工具将所有cpp项目创建为“exe”,而许多源VB6项目是“activex dll”

VB6项目如何映射到VC++项目?例如,“activex dll”是否映射到vc++ATL项目?我们应该注意什么?如果你能分享你的经验,我们将不胜感激


(是的,我们的第一个反应是建议转换为VB.NET/C#,但该程序需要在没有安装.NET framework的机器上运行,并且还调用kernel32.dll中的方法)

您不能。也许您可以将vb6代码转换为vb.net。然后,您可以轻松地将其转换为C或托管C++(ALL .NET Langs编译为MSIL,这样就可以转换为另一个.NET,简单地用反射器等)。

< P>您可以考虑使用能够处理完全转换的迁移工具。看

<> P.引擎中包含VB6和Visual C++的完整解析器,可以应用VB6曲面语法转换为Visual C++曲面语法的转换规则。p> 必须有人编写翻译规则,而且有很多规则需要编写;对于每个langauge构造和它可能发生的上下文,您都需要一个。这意味着在您的情况下,如果需要的话,您需要特殊的规则来生成作为DLL而不是.exe的翻译。写这样的规则比看起来更难,主要是因为你需要写的数字,通常是1000-2000;这不是为胆小的人准备的。但是它可以产生非常可靠的翻译人员(更多细节请阅读链接上的答案)


你没说“一堆代码”是什么。在较小的范围内,您可以使用更多的特殊方法(手工翻译、修补糟糕翻译器的输出[例如,您讨论的翻译器],等等)。在足够的规模下,自动转换是一种有效的方法。

转换为托管代码(VB.NET、C语言或管理C++或其他任何方法)不是一个选项,NETFramework在目标机器上不可用。请尝试将链接带到VB.NET到C++转换器。我正在寻找VB6到VC++的转换器。你说得对。他们把VB6升级到VB.NET,然后用VB.NET移植到C++工具。我认为剩下的唯一可能性是完全重写。随着代码基数的增加,完全手动重写往往会失败。说“做手动重写是你唯一的选择”的人经常没有尝试这样做。为什么要转换成C++?有什么好处?顺便说一下,.Net framework是作为Windows的一部分安装在最新版本上的,您可以通过Pinvoke从.Net调用Kernel32。虽然在纯.Net中不调用Kernel32也可以达到同样的效果,但为什么要转换呢?如果你不能证明重写是正确的,那么当前的程序应该可以。使用自动工具转换的任何大小的VB6项目都需要维护。我们最终使用了vbto.net并手动修复了编译器错误。这很困难,但我们成功地移植了代码。对我们来说,完全重写不是一个选项,因为运行应用程序的新系统没有安装任何.net运行时或visual basic DLL。这可能是最可靠的解决方案,但正如您所说,这不适合胆小的人。我们没有用这个。我们使用vbto.net并手动修复了所有编译器错误。那么,您使用vbto.net转换了多少代码?多少钱通过并正确转换?你花了多长时间修好剩下的?