SCIInstitute / Seg3D

Seg3D is a free volume segmentation and processing tool developed by the NIH Center for Integrative Biomedical Computing at the University of Utah Scientific Computing and Imaging (SCI) Institute.
108 stars 47 forks source link

Cannot start the application because of partially missing MSVC CRT DLLs on Windows 10 x64 #404

Open Anton-V-K opened 2 years ago

Anton-V-K commented 2 years ago

Description

The application fails to start on Windows 10 x64

Steps to Reproduce

  1. Install latest version on a clean Windows 10 64-bit (10.0.18362 Build 18362) without installed updates.
  2. Run the application.

Expected behavior: The application should start.

Actual behavior: The application fails to start because of missing VCRUNTIME140_1.dll and MSVCP140_1.dll.

Here are the system error messages (in Russian):

---------------------------
Seg3D2.exe - Системная ошибка
---------------------------
Не удается продолжить выполнение кода, поскольку система не обнаружила VCRUNTIME140_1.dll.
Для устранения этой проблемы попробуйте переустановить программу. 
---------------------------
Seg3D2.exe - Системная ошибка
---------------------------
Не удается продолжить выполнение кода, поскольку система не обнаружила MSVCP140_1.dll.
Для устранения этой проблемы попробуйте переустановить программу. 

Similar issue(s): May be related to #397

Versions

Application: Seg3D v2.5.1 for Windows 64-bit OS: Windows 10 64-bit (10.0.18362 Build 18362) without installed updates

Anton-V-K commented 2 years ago

Since the rest of MSVC CRT DLLs (namely concrt140.dll, msvcp140.dll, vcruntime140.dll) are already present in the application bin directory, I would try putting the missing ones (VCRUNTIME140_1.dll and MSVCP140_1.dll) into the same location.
If you share the missing DLLs, I can test to verify whether this fixes the issue.

dcwhite commented 2 years ago

I will work on fixing the installer, it looks like building with a newer Visual Studio is the problem. In the meantime, just google those DLL names, they can be downloaded and put in the bin folder which should fix it.

Anton-V-K commented 2 years ago

Thanks for looking into this. I guess, all DLLs should belong to the same CRT version (14.16.27012), and I doubt it will be easy to find DLLs separately - they are usually deployed as a bunch by vcredist_x64.exe or vcredist_x86.exe. Anyway I looked into directories of VS2017 (I have it installed on one of my PCs), and found (at the location like C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC\14.16.27012\x64\Microsoft.VC141.CRT) following DLLs:

It's strange that VCRUNTIME140_1.dll isn't there. Looking at the dependencies of the application, I see that only Qt's DLLs (qwindows.dll, QT5WIDGETS.DLL, QT5GUI.DLL, etc.) are linked against VCRUNTIME140_1.dll, so I guess, the bundled Qt binaries are linked against VS2015's CRT, and the app is linked against VS2017's CRT... well, it looks like a mini "DLL hell" :)