用visual studio开发和编译的c ++程序

时间:2010-08-03 03:42:13

标签: .net c++ visual-c++

我安装了Visual c + + 2010 Express。我用它开发了一些应用程序(现在主要是基于控制台)。

我通常通过cl.exe命令行选项编译。我使用Visual C ++编译的这些应用程序是否需要运行.net框架?

目标代码文件究竟是什么?

最后,我知道mono已经完全实现了Windows Form 2.0。哪个版本的.NET框架对应WinForm 2.0? (我猜.NET 2.0?)这是否意味着我必须使用Visual Studio 2005进行开发,或者我可以使用Visual Studio 2010创建一个具有不同.net版本的新项目吗?

由于

2 个答案:

答案 0 :(得分:1)

按顺序:

  1. 不,只要您坚持使用纯C ++(即避免使用C ++ / CLI),您的应用就不需要.NET Framework。但是,如果您动态链接到C运行时库(/ MD),您的应用程序将需要安装“Microsoft Visual C ++ 2010 Redistributable”。

  2. 目标代码是一种中间表示。您的源文件已编译为x86(或amd64)指令,但仍需要与运行时库链接在一起才能使用它们。除非在特殊情况下,.obj文件不被视为最终应用程序的一部分,不需要打包。

  3. 目前,.NET Framework 2.0,3.0,3.5和4.0对应于WinForms 2.0。由于它们在很大程度上共享相同的CLR,因此只要您远离新功能,就不必使用VS2005来开发兼容的应用程序。方便的是,微软已经停止了WinForms的开发,所以只需要避免使用WPF,你就可以了。

答案 1 :(得分:0)

您的应用程序是否需要.NET框架取决于您的编译方式。如果将/ clr标志传递给编译器,它将生成C ++ / CLI代码,这需要(并允许您使用).NET框架。

否则,您将获得一个本机C ++应用程序,但不需要它。

如果要使用属于.NET的Winforms,则必须使用/ clr标志。 正如ChrisV所提到的,如果使用/MD/MDd进行编译,则您的程序需要VC ++运行时库。如果使用/MT/MTd进行编译,则运行时会静态链接到您的应用程序,因此不需要单独的.dll。