Visual C++ 2010和本机可执行文件

4

本地程序!这意味着我的程序可以轻松运行,不需要任何要求?即使我使用 .net 类?

你知道我想写一个非常轻巧的程序,而且我不喜欢使用 C# 或任何其他 .net 编程语言,因为它们都需要 .net-framework 4.5。

想象一下,一个 2.5 MB 的程序需要一个超过 250 MB 的 .netframework。

最新更新 - 2016 年 12 月 01 日:

我提出这个问题已经快 4 年了。如你所知,Dotnet Native 已经发布了。这是一个将 IL 编译为本机代码的有趣功能。

用 .NET Native 编译应用程序

.NET Native 是一种预编译技术,可用于构建和部署 Windows 应用程序,它包括在 Visual Studio 2015 中。它自动将针对 .NET Framework 和 Windows 10 编写的托管代码应用程序的发布版本编译为本机代码。通常,针对 .NET Framework 的应用程序会被编译成中间语言(IL)。在运行时,即时(JIT)编译器将 IL 转换为本机代码。相比之下,.NET Native 将 Windows 应用程序直接编译为本机代码。对于开发人员而言,这意味着:

  • 你的应用程序将提供本机代码的卓越性能。
  • 你可以继续使用 C# 或 Visual Basic 进行编程。
  • 你仍然可以利用 .NET Framework 提供的资源,包括其类库、自动内存管理和垃圾回收以及异常处理。

本地exe不使用.NET类。它可以使用用.NET编写的COM服务器,但自然需要安装.NET Framework。 - Ben Voigt
3个回答

2
最后我检查过,没有任何 .NET 框架超过 250MB!是的,.NET Framework 3.5 SP1 的离线安装程序为 231MB,但它包含了 .NET 2、3 和 3.5 sp1 的 x86 和 x64 版本。您可以阅读此 http://www.smallestdotnet.com 以获取有关各个安装程序版本大小的详细信息。
现在回答您的问题:是的,让客户安装一个大框架有点烦人,即使是 20-40MB 也会令人感到烦恼。使用 .NET 的优势在于相对于其他本机选项来说编程更加容易(在我看来)。
您的本机选项包括:
MFC - 您只需要安装 VS 运行库,它只有 1-2MB,通常已经安装在较新的计算机上。另外,您可以将 MFC 库打包到一个 dll 中并随应用程序一起发布,这样大小再次小于 2MB。
这里的权衡是您需要使用 C++ 进行编程,库总体上只是本机库的一个非常薄的层。人们对 MFC 有着苛刻的意见。我刚刚尝试了一下。
Win32 API - 这是一种非常基础且相当困难的方法,您可以使用 C 或 C++,但必须对 Win32 API 及 Windows 本身的工作方式(例如窗口消息、hwnd 等)有很深入的了解。相信我,这并不好玩。但在部署期间,您将不需要任何外部库。
还有许多其他选择,请参见此处:
本机 Windows 应用程序开发选项
https://stackoverflow.com/questions/2711599/what-programming-language-should-i-use-to-create-small-native-windows-applicatio 以下是一些关于MFC的链接,可能会有所帮助:
想学习Windows编程,有什么建议?
如何决定在新的C++项目中使用ATL、MFC、Win32还是CLR?
C++ MFC与.NET有何区别?
https://stackoverflow.com/questions/557114/stick-with-mfc-or-go-to-net


1

你可以使用C++ Win 32项目创建本地exe。


1
哎呀,几乎所有的东西都需要下载运行时库,即使你已经安装了一个,你仍然需要不断地下载更新。即使是微软的C++应用程序现在也带有安全更新,如果你使用它们编译了你的应用程序,就必须安装这些更新。
但是...有一种解决办法。如果你使用C++,它有一个特性,只有你使用的东西才会被编译到最终的应用程序中。通常,这需要与所有的库dll进行链接,但是如果你静态链接库,你将得到一个尽可能小的单个.exe文件,而且你不需要任何dll(因为库中的所有代码都将被编译到.exe文件中)。
与dll相比,这种方法的好处还有待商榷,但是由于微软在.NET中几乎破坏了共享dll的概念(即,你实际上必须将所有的共享dll放在与你运行的应用程序相同的目录下,如果你的这些共享dll分散在所有的应用程序中,那么维护起来就会成为噩梦),所以现在几乎没有什么区别了。静态链接正在重新流行起来,听起来这正是你想要的。

对于现代C++开发,您可能想要查看Qt而不是MFC。它更易于使用,并且跨平台,因此您可以在Android或Linux平台以及Windows上运行Qt应用程序。


Qt是免费的(LGPL许可),请查看SO以获取更多关于Qt的问题并跟随链接;Qt运行时库(据我所知)为9Mb。整个Qt二进制目录包括我拥有的所有插件和10mb的QtWebkit dll共计44Mb。 - gbjbaanb

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