我安装了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版本的新项目吗?
由于
答案 0 :(得分:1)
按顺序:
不,只要您坚持使用纯C ++(即避免使用C ++ / CLI),您的应用就不需要.NET Framework。但是,如果您动态链接到C运行时库(/ MD),您的应用程序将需要安装“Microsoft Visual C ++ 2010 Redistributable”。
目标代码是一种中间表示。您的源文件已编译为x86(或amd64)指令,但仍需要与运行时库链接在一起才能使用它们。除非在特殊情况下,.obj文件不被视为最终应用程序的一部分,不需要打包。
目前,.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。