什么是编译为本机Windows代码的优秀轻量级编程语言?

时间:2009-05-31 23:44:08

标签: .net windows winapi compiler-construction programming-languages

我是.Net开发人员,但我无法保证在目标计算机上安装.Net Framework。

我已经看到一些问题(herehere)建议使用NGen编译为本机代码。两者都指出你仍然需要这个框架。

我想编写一个相当轻量级的应用程序(基本的GUI,没有数据库,没什么复杂的),但出于各种原因,我不想安装任何框架或字节码解释器。

This question建议使用Python和py2exe。我不熟悉Python,但如果它是这项工作的最佳工具,我可能已经足够学习编写这个应用程序(我不想这样做)。我也考虑用DHTML和javascript编写它 - 我可以依赖具有相对较新浏览器的机器。

我熟悉C语言系列,并且涉猎过Java,PHP和Ruby。

有人能推荐一种我可以轻松编译为原生Win32代码的语言吗?

编辑:澄清

有一些答案表明,如果我熟悉C语言系列,为什么不使用C?我应该澄清一下。我每天都使用C#,而且我在C +和C ++上长大(但是已经使用了很多年)。

看起来C / C ++似乎是可行的方法,但我必须刷新它们的记忆:)

12 个答案:

答案 0 :(得分:16)

如果它很轻巧而且没什么复杂的,而且你熟悉C语言系列..那为什么不用C和Win32 Api?它比编写.net或java程序更难,但肯定会编译为本机的Windows代码,并且不需要字节码或解释器。

此外,您可以使用Mono将C#应用程序与Mono运行时静态链接。 http://www.mono-project.com/Guide:Running_Mono_Applications

我认为你需要了解C ......还有另一个想法,那就是:Delphi

this thread

还有一些答案

答案 1 :(得分:5)

我会尝试用Qt编写C ++ ...我认为这是一个非常重要的学习框架,考虑到它刚刚变成了LGPL。

答案 2 :(得分:4)

如果您愿意考虑一个完全包含在您的安装中的字节码解释器(您提到的python解决方案将会这样做),那么您可以考虑使用Luasrlua之类的东西。将脚本和解释器捆绑到一个.EXE中。为了使用Lua快速访问GUI,IUP是一个不错的选择,但也有其他GUI框架的绑定。

如果问题更多的是没有很多系统依赖性的干净安装,而不是试图获得没有DLL的单个EXE,那么考虑使用Lua而不用srlua来打包它。它不需要以任何神奇的方式安装,并且可以与脚本以及DLL或脚本形式的任何所需模块一起存在于单个文件夹中。

将C可调用函数绑定到Lua核心很容易,因为作者从一开始就将其设计为嵌入在更大的应用程序中。例如,它只需要几行样板来创建一个用C语言编写的Lua可调用模块,该模块分布在DLL中。

开始使用Lua以及一整套有用模块的简单方法是Lua for Windows项目,该项目为Lua维护一个“包含电池”安装套件。

答案 3 :(得分:4)

Pascal / Delphi可能吗?

实际上,如果你想要兼容性,没有比不使用MFC的Win32应用更好的了。不确定STL是否没有安装VS安装的额外DLL。

另一方面,我记得在安装时看到VC ++可再发行组件等消息丢失,不确定它是否涉及MFC甚至是核心库。最好不要使用MFC。

您可以使用WTL进行GUI,它将编译为您的可执行文件。

答案 4 :(得分:3)

Windows API本身位于C。

如果C不够轻,你可以考虑使用C ++ / MFC,这对于制作简单的GUI程序很有帮助,而你的编码很少。

答案 5 :(得分:2)

对我而言它的powerbasic(www.powerbasic.com)。它编译本机exe(真实的,而不是嵌入编译的字节代码)。语法就像旧的pds或快速基础(但更进一步)。它允许内联汇编程序,面向对象的类(可选,你也可以只执行程序代码)。如果你有c背景,那么坚持下去。如果你喜欢basicy语言,那么pb是不费吹灰之力的。它就像带有字符串的c。除此之外,如果你喜欢pascal,delphi的编译器可以产生本地exes。

-don

答案 6 :(得分:1)

NGen旨在通过编译本机代码来优化.NET代码。您仍然需要.NET框架。此外,NGen在客户端计算机上的安装程序中运行 - 您无法分发本机代码。

创建.NET安装程序项目,该项目将检查框架,并自动安装。

答案 7 :(得分:1)

在不知道你将要编写什么特定类型的应用程序的情况下,确实有点难以说明......但是MFC(如果你知道的话)或普通的C / C ++和Win32 API将是一个合理的选择,根据您提供的信息。

当然,MFC有点陈旧......但是随之而来的是数以万计的应用程序,除了它的瑕疵之外,它确实可以用于多种用途。如果您可以获得Visual C ++ 6.x的副本,那么有很多向导可以帮助您快速获得应用程序。也就是说,我绝对不会建议仅仅为此目的学习MFC。

答案 8 :(得分:1)

按照C / C ++的说法,您可以查看the D programming language。它具有D的大部分优势,包括默认的原生二进制文件,但在功能部门中更接近C#或Java。不幸的是,在工具中,在较小程度上,libs域令人遗憾地缺乏(虽然这种情况正在迅速改变)。

答案 9 :(得分:0)

C ++或VB6都适合你。看看VB6。它非常容易学习,并且很容易用GUI进行GUI。

答案 10 :(得分:0)

我喜欢C ++ Builder。 .NET Framework是由Borland的Visual Component Library中的一些人设计的,所以如果你走这条路,那对你来说似乎很熟悉。

答案 11 :(得分:0)

另一个选择是坚持w / .Net并使用.Net链接器,例如Salamander .NET Linker或Thinstall - 这样你就不必担心客户机上有什么了。