Languages to generate single-EXE Windows apps? - windows

I was wondering what tools there are out there to generate single-EXE Windows apps, ie. with all the libraries compiled into a single EXE, without any dependencies whatsoever.
I know these:
Delphi
PowerBasic and other non-OO compilers like FirstBasic, etc.
RealBasic
C/C++
Do you of other tools?
Thank you.

It's quite easy to roll various .NET files into a single file, if you're thusly inclined.
http://research.microsoft.com/en-us/people/mbarnett/ilmerge.aspx

Visual C++ 6. Windows ships with MFC or you can just write to the Win32 API.

You can use modern Visual C++ to do this as well, if you choose the correct options for statically linking.
Another option is to provide all the side-by-side assemblies the in the same directory as your executable, using the correct scheme. But then your assemblies won't be updated by Windows Update.

I believe a Perl compiler still exists which compiles to a native binary (handles multiple target platforms).

Fortran. It's called static linking.

Well for modern versions of Windows that have the .NET framework preinstalled, any of the .NET langs are an obvious choice... VB.NET and C# have those nice GUI builders too :)
This is the M$ answer i suppose as they would say that .NET is not a dependency since its a core part of windows now. Not true for those running windows 2000 at least.

Related

Qt development in windows. Do I need pay for Microsoft tools?

Considering to develop a desktop application with Qt for Windows. It will be a free download application, but for a commecial SERVICE. (need an account with our commercial service to work).
I think we could use the Qt for Windows from Nokia (LGLP version) because its free app. But the lastest one version of Qt needs a C++ complier from Microsoft.
Which one?
Do I need to pay for an C++ compiler from Microsoft, or do they have a free version to use with Qt?
Reading info docs, googling and we still cann't understand what tools do I need.
If you want to use the Visual Studio compilers, you can download the free Windows SDK. The following link takes you to the SDK for Visual Studio 2008:
Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1
This includes all the C++ compilers and tools you need. (There is a more recent version available, but Visual Studio 2010 is not yet a "level 1 supported" platform for Qt.) We are using this on standalone build machines and it works fine.
Just a personal opinion, but we have found that using anything other than MSVC on Windows (for example, MinGW) causes a lot of problems. It is not that the other toolchains are bad, it is just that they are all treated as second-class citizens. We had lots of problems with third-party libraries not being able to build in MinGW or having nonexistent build instructions and having to do a lot of manual Makefile editing, etc. You are much more likely to have things "just work" if using MSVC.
For the most part (static linking), you cannot mix and match. You need to pick one toolchain and stick with it. If I were starting from scratch, I'd definitely go with MSVC.
Just our experience (we started with MinGW); your mileage may vary.
No, you do not need to pay for anything.
The Microsoft toolchain is available for free as part of the Microsoft Windows Software Development Kit.
Additionally, the following article may also be of interest to you:
Developing Windows Applications in C++: The tools you need
The alternative supported by Qt is MinGW. The runtime libraries are free from copyright, so you can do whatever you want with them.
It is basically the Windows counterpart of the GNU Compiler Collection (GCC) under Unix.

Does it possible to run C++ apps for every type of OS?

I would like to use C/C++ for coding my apps, but I need my apps running on all versions of Windows from XP to Win8, independently by any platforms, run time libraries and so on.
Briefly: What kind/type of C/C++ I suppose to use, be able to run my apps on every type of Windows without any additional installation, just default one. e.g Windows XP SP1
C++ can run on just about any OS, as long as you avoid (or, via conditional compilation, provide alternatives for) anything specific to one OS or version. Win32 code is almost all the same between versions; the main difference is added functionality in newer versions. Between Windows and, say Linux, though? Not so much. You kinda need to pick a platform, unless you want to either stick to text mode (which is pretty close between OSes, thanks to standards) or learn some whole other platform-neutral API like OpenGL, wxWidgets, GTK, etc.
As for which compiler to use, if you're sticking with Windows, I'd recommend Visual Studio. Microsoft has a free (Express) edition that will let you compile Win32 code or .net. (You'll need the paid version, or some playing around with the Platform SDK, to play with 64-bit though.) And the IDE isn't too bad either. If you just want a compiler, the Platform SDK has the same compilers VS has, and includes 64-bit support (and even a bunch of code samples and tools) as well.
As for being independent of any runtime libs: Every C++ compiler that's worth using has a runtime library. If you link statically against it, though, the parts you need will be embedded in your EXE. Alternatively, you have permission to distribute the runtime libs with your app (though you may need to install it via a package they provide, that you bundle together with your app...i forget how all that works).
All popular C++ compilers support XP up. You can statically link the runtime, or, for mingw, you can link against the runtime supplied with Windows.

Ada with Visual studio

I'm just starting to learn Ada and was wondering if an editor like MVS 2008/2010 can be used? Will MVS detect the GNAT compiler? I have the GNAT GPL compiler but find the GPS editor hard to use (much less intuitive than the MVS editor). The tutorial doesn't explain well how to create a project in GPS.
I'm currently using AdaGIDE which works well, though it's limited in features.
Thanks.
I haven't ever seen any VS addon for Gnat. It would be tough to do for vanilla Gnat, as it isn't compatible with the Microsoft linker. This is more of a gcc vs. Microsoft thing. There is a Gnat .NET port, which claims to integrate well with the Microsoft tools (including VisualStudio). You may have better luck with that.
The other option you have is ObjectAda. It doesn't use VisualStudio either, but it uses an environment designed to be familiar to VS users. It isn't free, but last I checked its cost was comparable to VisualC++'s. It does use the Microsoft linker, so integrating it with VisualStudio should be doable.
Personally I loathe VisualStudio, and do all my editing in Emacs (Even for Microsoft C++ work), but I can see where you are coming from.
VisualAda isn't released yet, but when it is eventually, it will not only integrate GNAT with Visual Studio, but also automatically generate Ada bindings for WinRT components รก la what C++/WinRT does for C++. Here is a video and here is a posting on comp.lang.ada of a demo of the unreleased VisualAda.
Finally, we got "Visual Ada" plugin by Alex Gamper:
https://marketplace.visualstudio.com/items?itemName=AlexGamper.VisualAda
As stated by many others, the add-on is based on gcc/gnat (with all that mingw/msys2 infrastructure) and still not native for VS

Is it possible to run applications compiled by Visual Studio 2008 on Linux?

Is it possible to run applications compiled by Visual Studio 2008 on Linux? Is there plugin that can convert my project exe to a Linux runnable file?
As far as I know, there is no software that allows Visual Studio to generate non-Windows executables.
If it's a native executable (not .NET) you can try running it under WINE and see if that works. If it doesn't I'd guess the options are either to make it work with WINE or see if you can build it as a native Linux application. The latter will be rather painful if it's a GUI application, obviously, and I'd question if it is worth it. Porting a command line app might be doable but don't underestimate the work involved.
if you use dot net there is a MONO library that enables running some dot net application on linux.
but it not fully compatible.
Otherwise you can do it, (maybe using silverlite you would...)
Mono Project

Cross platform COM development

COM as we know is language and platform independent standard, but all the time I see only articles on developing COM components on Windows. Could you share your thoughts on how to develop a true cross-platform application.
I've written code using COM on Mac and Unix, with no supporting libraries. You actually just need C++. It's basically a protocol.
However, if you really want to write using cross-platform COM, I suggest you look at https://developer.mozilla.org/en/XPCOM
If you aren't opposed to commercial tools, MainSoft's MainWin let's you integrate Visual Studio COM/ATL development in a Linux environment. You actually develop on your windows box but the binaries are compiled on the native Linux box. You can check it out here:
http://www.mainsoft.com/content/mainsoft-enterprise-edition-overview
I have personally used this at my company with great success.

Resources