Can VC_redistx64 package be installed and used, without visual studio? - visual-studio

I understand vc_redistributable is a set of libraries required to run applications built out of Visual studio.
So at my work place, can I install vc_redist on a device and avail its benefits without installing visual studio on that device?

Yes, and it is considered to be a preferred way to make the application running on other devices.
Can be downloaded from Microsoft site https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
Alternate ways include statically linking, or distribute DLLs locally.
Note that the debug version is not distributed with vc_redist, generally you should not distribute the debug build of your software.

Related

Building a third-party library for Visual Studio

The project I'm currently working on as an intern uses a number of 3rd party libraries (libCURL, OpenSSL, and others). I've noticed that there are a number of versions of the third-party .dlls used by the project, a developer selects which one they want to use depending on what version of Visual Studio they are developing in.
My task is to upgrade two of the libraries to a newer version (libCURL and OpenSSL). One way to do this is to build the libraries from the source files and then replace the old files with the new ones. This is what I want to do, as I think I'd learn more by doing that rather than using pre-built binaries.
My question is, what special thing do I need to do during the build process to make these two libraries work with Visual Studio 20XX? Is it as simple as building the libraries using the Developer Command Promp for Visual Studio 20XX? Alternatively, if I followed the official guides to build one of the libraries for Windows x64 (which is the bitness of the Windows I'm running), presumably the resulting files wouldn't work in Visual Studio 20XX? Why not? What are these "generic-ly built" versions of a library used for?

What are the different platforms/languages in which an app can be compiled and run on Windows without any prerequisites?

What are the different platforms/languages in which an app can be compiled and run on Windows without any prerequisites? I know of .NET but it requires the specific version of .NET to be present in the Windows installation.
C and C++, but Visual Studio defaults to dynamically linked library. Change the default to static and you will be fine.
That being said, ther are no compilers that come with windows. You must install a compiler to build the a program that will run everywhere after that. There are free version of the compiler in the Platform SDK and in mingw (Cygwin requires a dll).
If you are using Visual C++ as language and development tool, you may switch to Statically bound DLLs, which would produce larger binaries, but would run without any runtime-prerequisites. Visual C++ Runtimes are easily installable, can be distributed, or users may be asked to install them directly. If users are using Windows Update, they would anyhow get the latest VC runtimes.

Deploying applications built in Visual Studio 2010 on older windows platforms

I am trying to deploy an application built in Visual Studio 2010 on older Windows platforms. However, the application is complaining about library files such as MSVR100.dll and MSVCP100.dll. I know I can just install these files using vcredist_x86.exe but that is not possible on a large scale.
I am trying to find these files and package them together with my application but am having quite some trouble in trying to locate these files.
Does someone know where these files are installed?
Thanks.
You should use the merge modules provided by Microsoft to include the runtime libraries in your installer.
http://msdn.microsoft.com/en-us/library/ms235299.aspx

Installing Qt4 on Windows - do I need to fully install MinGW or just have local copies

That is, can I get away with DLLs in the install directory or does the installer need to ensure that MingW is fully installed?
If you install the Qt SDK, it will actually install its own MinGW tree.
This does not directly answer your question, but generally speaking, to ensure I have all the right dependencies when creating an installer, I do the following:
Use Depends, a Microsoft tool that shows what DLLs a Windows executable (.exe or another .dll) depends on. This will not show dynamically loaded DLLs though, such as QT plugins. I believe Depends is part of the Platform SDK (it used to be, anyway), which you should be able to download. See here for example.
Use a virtualization tool (like VirtualBox or VMWare) to install a fresh copy of Windows and your application. If it complains of missing DLLs on startup, you missed something in the install package.
You should be aware of any dependencies on the Visual C++ run-time. There are many different versions out there, and if your app depends on them, you need to install the correct version to the Windows\WinSxS directory. Microsoft provides a redistributable for each version of Visual C++ (including the express edition, which you can get for free). I only mention this because I noticed when installing Qt SDK that the VC++ redistributable was getting installed, so the Qt DLLs may have a dependency on the VC++ run-time.

What is the best way to build open source libraries DLLs for Windows developers to use?

I have several C free software/open source libraries that I develop on Linux and OSX with the GNU toolchain (automake, conf, flex, bison, gcc, ...) but I occasionally get requests to provide Windows DLLs. I'd like to be able to provide those without having to spend a lot of time and money with Windows Visual Studio development. I do have a Windows XP virtual machine available and I also know the software is portable as occasionally I get patches to make it build in on windows.
What approaches or tools should I be using? Cross compiling on Linux? using Visual Studio Express or something else? I would prefer something that is fully automated from a SVN repository. I do not count cygwin as a solution since that does not seem to provide what Windows developers need, as far I understand the issues - linking and DLLs.
You can try Mingw with MSYS, Visual Studio (Express) with SUA (subsystem for unix application) or Cygwin to compile programs that are automake/autoconf based (./configure && make to build under linux).
Unfortunately usually the lib file they create is not compatible with other compilers, so if you want your library to work with an application that is developed using Visual Studio, then you should use the VSC++ approach. Usually a lot of GNU projects (check gnuwin32) actually have VC compatible build scripts too, than can be compiled using "nmake"
You could use MinGW or install the MSVC command line tools from Visual Studio Express.
Either of those can be driven by command line scripts.
I imagine a cross compile from Linux would also work, but I have no idea how easy (or painful) that might be to get going.
This short article shows a simple cross compile of a Windows application & running that app under Wine:
http://www.linuxjournal.com/node/1005753
The Windows Software Development Kit includes Microsoft's C/C++ compiler (command line only with no visual tools), so you don't even need Visual C++ Express Edition. The Windows SDK is a free download from Microsoft.
If you're using http://www.cmake.org/, cmake can create the Makefile (for Unix) and project file (for Visual Studio). This is what for example the KDE project is using.
Visual Studio's compiler can be started from a Windows command line with 'devenv /build debug project.csproj' on the cmake generated file. This does however require a Windows (possibly in a VM) with a (potentialy free) Visual Studio installed.

Resources