2012-10-07 135 views
1

我所有的商业经验都基于.NET(VB和C#)等高级语言。我有C和C++(大学)的学术经验。Visual C++编译

我不完全理解Visual C++如何适应.NET方式。我有使用Cygwin为Linux编译C++程序的经验(在大学)。

我正确地指出Visual C++会编译成像C#和VB.NET这样的中介语言吗?我假设开发人员只使用Visual C++,而C++开发人员则希望针对多个环境使用Cygwin?

我问的原因是因为我使用C++组件(由其他开发人员编写)作为.NET应用程序的一部分。

我今天在线阅读了很多Visual C++文章,但是我还没有找到我正在寻找的答案。

回答

3

编号C++直接编译为机器代码,没有像.NET的IL这样的中间步骤,它带有即时编译器,可以在运行时将其转换为机器代码。

如果您需要在C++和.NET代码之间进行互操作,那么您可能需要查看C++/CLI。一种仅仅是类似于 C++的语言,但它很好地弥合了本地C++和.NET运行时之间的鸿沟。

+0

感谢+1参考:C++/CLI。我假设如果代码是用传统的C++编写的,那么它将不得不在C++/CLI中重写? – w0051977

+0

C++/CLI的意义在于你不必重写那种类型的代码。 C++/CLI编译器也可以编译本机C++代码。 *和*您可以编写一个托管包装类,以将本机C++类展示为托管代码。 –

+0

谢谢。如果您可以使用C++/CLI编译器编译本地C++,那么您将如何编写一个包装类?我假设它将类似于在.NET中使用COM组件(VB6),即通过暴露类型库。 – w0051977

2

我正确地指出Visual C++会编译成像C#和VB.NET这样的中介语言吗?

是,也不是。如果您使用C++/CLI(这是Visual C++中包含的Microsoft专有语言,类似于C++语言,但绝对不是同一件事),那么是的,它会编译为.NET中间代码。如果关闭C++/CLI并使用标准C++,则它将编译为本机代码,而不使用.NET运行时。

Cygwin是谁想要针对多个环境的C++开发人员使用?

如果您想要定位多个环境,则不需要Cygwin。然而,用Cygwin编译的便携式代码更可能在其他平台上的GCC上进行编译。您可以使用任何编译器编写可移植代码。

Cygwin来编译C++程序的Linux

我想你可能是在这一点上一丁点混乱。 Cygwin是一个为Windows提供GCC编译器(和类POSIX)环境的软件包。 Cygwin不能在Linux上运行,没有必要。

+0

感谢+1为我的第三个问题的答案:“Cygwin编译用于Linux的C++程序”。 – w0051977