Delphi C++Builder转换到Visual Studio

5

我们是否可以“轻松地”(以某种方式)将C++Builder项目编译成Visual Studio 2005 C++。我正在寻找有关此事的参考资料(CBuilder vs VS)。谢谢。

3个回答

4
如果您使用VCL类,就无法在Visual C++中编译代码。 VCL引入了一些新的语言结构,使其与Delphi兼容,例如__property等。即使您可以将VCL代码移动到某个外部动态链接库中,仍然会有很多问题调用VCL函数。这是因为Borland __fastcall调用约定与大多数其他编译器实现不同。 Borland版本将3个参数传递给寄存器,而大多数其他编译器使用2个参数。
总的来说,由于不同的编译器实现,特别是如果使用VCL或__fastcall调用约定,可能会出现许多问题。C ++ Builder的好处在于它建立在与Delphi和VCL兼容的基础上,虽然VCL是用于RAD和GUI程序的优秀框架,但它增加了与其他编译器的兼容性成本。

谢谢...就是这样,我的项目包含许多核心VCL类。 - volvox

4

其实并不是这样。虽然“纯”C++部分应该可以编译,但你需要处理两个非常大的陷阱:

首先,Borland对C++进行了一些专有扩展,以使其与其Delphi产品兼容。我不记得这些是什么,但根据你所做的事情,它们可能会成为问题。

但主要问题是VCL,即主GUI库。如果你正在使用C++Builder进行开发,那么99%的时间你都在使用VCL,并且相当频繁地使用它。据我所知,由于包括我已经提到的原因在内,VCL将无法在任何Microsoft编译器下编译。

因此,如果你想在VisualStudio下运行此程序,则必须转移到.NET(或者如果你是一个受虐狂,可以使用MFC或其他东西)。这里的一个亮点是,许多第三方组件开发人员已经接受了.NET,因此你可能不必像你想象的那样做太多工作来转移项目。


0

其实,最终都是C++,所以你可以将C++Builder文件包含到VS2005解决方案中,并进行链接库。毫无疑问,VS2005更喜欢看到MFC或.NET,而不是来自C++Builder的所有Turbo类。导入资源也可能是一个问题。

我也对其他答案感兴趣。我们的项目可能需要走同样的路线。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接