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

时间:2010-10-12 21:53:43

标签: visual-c++ vb6

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

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

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

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

2 个答案:

答案 0 :(得分:-1)

你不能。也许你可以将vb6代码转换为vb.net。然后你可以轻松地将它转换为c#或托管c ++(所有.net langs编译成msil,因此可以使用反射器等轻松转换为另一个.net lang。)

答案 1 :(得分:-1)

您可以考虑使用能够处理完整转换的迁移工具。请参阅What kinds of patterns could I enforce on the code to make it easier to translate to another programming language?

所涉及的DMS引擎具有VB6和Visual C ++的完整解析器,并且可以应用将VB6表面语法映射到Visual C ++表面语法的转换规则。

有人必须写出翻译规则,并且有很多要写的;你需要为每个langauge构造和它可以发生的上下文。这意味着在您的情况下,如果这是一个真正的要求,您需要特殊规则来生成转换为DLL而不是.exe。编写这样的规则比看起来更难,因为你需要编写的数字,通常是1000-2000的订单;这不适合胆小的人。但它可以生成非常可靠的翻译器(请阅读链接中的答案以获取更多详细信息)。

你没有说“一堆代码”是什么。在较小的尺度上,您可以使用更多的临时方法(手动翻译,修补坏翻译器的输出[例如,您讨论的那个]等)。在足够的规模下,自动转换是一种有效的方法。

相关问题