I am building an audio processing application in Qt and an installer through Inno Setup. Recently, a co-worker testing the application had difficulty running it because "VCOMP100.DLL" was missing. We had been through a few versions already and had not gotten the error, but I will include it in the installer anyways. However, my version of vcomp100.dll was in my system files - did that mean I should install it there? And so I wondered:
What kinds of libraries should my installer try to install in the system directory? On one hand, duplicated data is wasted data, but on the other hand, I'm nervous about messing with system files. I have ~5 types of libraries:
Very basic C/C++ runtime libraries (msvcp100, msvcr100)
Unicode support libraries (icudt51, icuin51, icuuc51)
OpenGL as part of Qt (libEGL, libGLESv2)
Qt-specific libraries (Qt5Core, Qt5Gui, Qt5Widgets)
Sound processing libraries (soxr, libsndfile, portaudio)
Can you explain what to install where, but more importantly, why?
Do not install these files directly.
Use bundled installers from companies which produce that libraries.
For example instead of copying msvcp100, msvcr100 use Microsoft Visual C++ 2010 Redistributable Package (x86 or 64bit: http://www.microsoft.com/en-us/download/details.aspx?id=5555) to install VC++ runtime files.
There may be another dependencies in your libraries and this package install everything required.
The installers can be run silently and it is more user friendly. If the runtime is already installed there is no problem if it is overwritten.
Check these topics for more info:
How to make vcredist_x86 reinstall only if not yet installed?
InnoSetup - Check if visual studio 2010 crt redist is installed, if not then run installer
I suppose this should be the same for Qt.
Related
I want to run a c++ application written in vs2017 in Ubuntu 16.04. I've installed Wine version 3.0.3 as well as Winetricks version 20140817. When trying to run the application using 'wine app_name.exe' command, i get an error saying
002e:err:module:import_dll Library mfc140u.dll (which is needed by L"path_to_my_application_library") not found
I tried to install mfc140u via Winetrichs GUI using 'Install a Windows DLL or component' option but it seems not to be listed anywhere on the list of the available packages. Does anyone know how to make it available?
Make sure you are using the most up-to-date version of Wine (currently Wine 4). You can check by running:
wine --version
If you need to upgrade Wine, check out the instructions here.
That dll is a part of Visual C++ redistributable. You'll need to install it so the application will work. Instructions are here.
I don't use Wine, so there could be additional steps, but in the interest of helping:
I believe you need the appropriate version of the VC++ redistributable (Visual Studio C++ runtime). You need to install the version that the application you try to run was compiled with. Just start with the latest one and install and then install older versions if need be. MSDN Forums.
Download
vc_redist.x64.exe
from
https://www.microsoft.com/en-us/download/details.aspx?id=48145
from console run
wine uninstaller
uninstall any existing runtime version, then select "install" and browse for the vc_redist.x64.exe file, accept. Execute your Windows appplication
I would like to have a POSIX environment in Windows (to be used as a system shell) and at the same time produce native Windows executables. One option in the past was to install Cygwin and MinGW and possibly call MinGW compiler binaries from Cygwin.
Now an x64 MinGW is available straight as a Cygwin package and there are some blogs documenting how to get them play nicely together.
Before adopting this solution, I would like to know how and if the Cygwin package is different from a standalone MinGW-w64. Specifically which one is more efficient in producing native Win64 exe's? Is Cygwin package itself based on native executables, or is an extension to its gcc compilers?
Update
Some of you miscomprehended this question:
I am not interested in the difference between Cygwin and MinGW at all.
(and by the way, on the very home page of MinGW their main concern is to show how they differentiate from Cygwin)
My question instead is very specific: I am interested in the difference between a specific Cygwin package and its standalone version.
This package happens to be "mingw64-x86_64", which is split in several dependencies files, of which the most relevant is perhaps "mingw64-x86_64-gcc-core".
Sorry, but references found in some comments are utterly wrong with respect to what is asked here: first they address to Cygwin as a whole and not the mentioned package; secondly they refer to a rather old MinGW version, significantly different from that mentioned here (see here for the differences).
Someone also mentions MSYS2, which is a modern Cygwin fork, but again I am not interested to Cygwin (as whole), but to the said package.
Some of you might not be aware of this package, and in fact, if you google for "mingw64-x86_64", you don't find anything relevant for the Cygwin package, and most likely land on the general version, and this is why I am posting here.
TL;DR: Install Cygwin and the package mingw64-x86_64-gcc-core.
if the Cygwin package is different from a standalone MinGW-w64
They are the same.
MinGW - this is the project that can be found at mingw.org and
sourceforge.net/projects/mingw. This project has been superceded by the MSYS2
and MinGW-w64 projects.
Cygwin environment - Unix-like environment, namely Bash.
Cygwin compilers - these are the packages gcc-core and cygwin32-gcc-core
which include the files x86_64-pc-cygwin-gcc.exe and
i686-pc-cygwin-gcc.exe. These compilers create programs that rely on
cygwin1.dll.
MSYS2 environment - Unix-like environment, namely Bash. This is an
update to the MSYS environment provided by the old MinGW project.
MinGW-w64 compilers - these are the packages mingw64-x86_64-gcc-core and
mingw64-i686-gcc-core which include the files x86_64-w64-mingw32-gcc.exe
and
i686-w64-mingw32-gcc.exe. These compilers create Windows native
programs that do not rely on cygwin1.dll.
What do the C compilers on Cygwin generate?
I have Qt 4.6.3 on Debian. I need version 4.8.1.
To install it I downloaded the Qt SDK 1.2.1 from the Qt site, where is said that it contains version 4.8.1
After installation I checked Qt version and it is 4.6.3 instead of expected 4.8.1.
What I am doing wrong? And how can I install 4.8.1?
First of all I recommend getting 'official' Debian Qt upgrades by adding the testing (wheezy) repo to your package manager, this way everything on your system will be updated seamlessly in a few clicks.
If you can't do this, then:
Use your package manager to uninstall the existing Qt installation (so that's the runtime libs, plugins, and Qt Creator).
Install the SDK anywhere you like, it installs under one folder anyway.
Update your $PATH to point to the directory with qtcreator, qmake, etc., there are numerous ways of doing this, the simplest is exporting the updated $PATH in your .bashrc. (And optionally make some nice shortcuts for your DE).
Create symlinks in /usr/lib (or /usr/lib64) to point to the Qt libraries the SDK provides, or add a qt.conf file containing the path in your /etc/ld.conf.so.d/ directory and run ldconfig as root.
I'm an openSUSE user myself, so some of the above may slightly different on Debian, hopefully someone with Debian experience can chime in if I'm incorrect.
several issues with both compilers.
Firstly, I've manually installed MinGW c++ compiler - the automated install was failing to download anything - exactly according to the instructions on the MinGW website, including adding C:\MinGW\bin to PATH system-wide, and restarted afterwars. However, g++ only launches if I cd to C:\MinGW\bin first. Secondly, when I do that, I get an error 'no include path in which to search for iostream', and when I look in c:\MinGW\bin\include (where all the header files seem to be', iostream.h is not there.
Finally, I tried downloading visual studio c++ from MS's website, which gives me the installer package vc_web.exe - but when I run this, it fails to download anything. My internet connection is otherwise fine so I can't think of any reason for this.
Any help would be much appreciated, thanks
-confused
As for Visual C++ Express, you can try the offline installer (which doesn't need an internet connection) http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express-iso
And regarding g++, it'll be easier for you to download an IDE that includes g++ and that sets everything up for you, I recommend CodeLite but there's also Code::Blocks
I'm trying to get GSL working in a windows environment for my team and I'm running into many problems.
My team develops in C++ in VS2005, and we'd like to use GSL. I've downloaded the GSL-1.15 tar.gz, and unzipped it, but i'm not really sure what to do from here - I believe only two compilers will build it properly.
On the GNU website, it says that a compiled version of GSL is available as part of Cygwin on windows, so I installed Cygwin, but again, I'm not really sure what to do from there.
Ideally, what I'm trying to get is a folder on my C:\ with a bunch of dll / libs that I can link to in VS2005 to use the GSL functions. I'm aware of GSL ports to VS (http://gladman.plushost.co.uk/oldsite/computing/gnu_scientific_library.php), but we can't rely on them as I would be dependent on the publisher releasing a port every time a new version of GSL is released.
Has anyone successfully gone through this process of building GSL and getting it to work with C++ in VS2005? I've done some google searches and haven't found anything that I understand.
Thank you.
With Cygwin
Install one or more of the GSL packages
gsl
gsl-apps
gsl-devel
gsl-doc
With MinGW
I have personally built GSL with MinGW using this incantation
wget ftp.gnu.org/gnu/gsl/gsl-1.15.tar.gz
tar xf gsl*
cd gsl*
./configure
# Warning, make takes about 7 min.
make
make install
ref