2010-08-03 66 views
1

我安装了Visual C++ 2010 express。我开发了一些应用程序(现在主要是基于控制台)。用visual studio开发和编译的C++程序

我通常通过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

我不明白你的问题的第三部分。你在你的代码中使用Winforms,或者它与什么有关? – jalf 2010-08-03 09:49:28

+0

我在我的代码中使用WinForms,并希望使用Mono将应用程序移植到Linux。 – Pwnna 2010-08-03 15:43:22

+0

我也想知道.NET需求部分。竖起大拇指 – Qosmo 2010-12-25 16:58:17

回答

1

为了:

  1. 不,你的应用程序不需要.NET框架,只要你坚持用纯C++(即,避免了C++/CLI)。但是,如果您动态链接到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的东西,你会被设置。

+0

感谢您的回复。对象代码怎么样?删除它是否安全?而且我不是在寻找要安装的应用程序,而是可以轻松地运行。 关于这个VC 2010可再发行组件,是否有反正不使用这个? – Pwnna 2010-08-03 03:55:38

+0

是的,编译后删除* .obj是安全的。 要避免VC++ 2010可再发行的需求,请使用/ MT或/ MTd进行编译。 – ChrisV 2010-08-04 14:39:06

+0

+1帮助 – Qosmo 2010-12-25 16:58:38

0

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

否则,你会得到一个本地的C++应用程序,它不需要它。

如果你想使用Winforms,它是.NET的一部分,你必须使用/ clr标志。 正如ChrisV所说,如果您使用/MD/MDd编译,您的程序需要VC++运行时库。如果使用/MT/MTd进行编译,则运行时会静态链接到您的应用程序中,因此不需要单独的.dll文件。

+0

我正在编译使用选项/ EHsc – Pwnna 2010-08-03 15:44:13

相关问题