Visual Basic programs need VB DLLs. Bundle them together and the program is many megabytes.
Because you linked it statically with libraries. Libraries have their internal dependencies, which means, that using some of their functions add many more to the linked package. You can only strip out debugging information and pack the exe with UPX (as suggested in previous post) to shrink the size.
Shared libraries are technically better. They are shared between all the programs using them, which leads considerable RAM savings the more applications use them. Also, this leads to better cache performance, and of course reduces swapping. Linux machines usually come with quite a large bunch of shared libraries by default, and you can usually install additional libraries from package managers. Windows machines usually don't have many shared libraries (other than Microsoft's own, unless user installs development environments and such) and users do not have centralized location to get them. Thus, many Windows binary distributions come as statically linked packages or as ZIP archives containing the libraries.
Bookmarks