[英]msvcr110.dll is missing although Visual C++ Redistributable package is installed?
I have a .NET application installed on the machine of a client which uses Tesseract.NET. 我在使用Tesseract.NET的客户端计算机上安装了.NET应用程序。 He gets the following behavior:
他得到以下行为:
At startup, these message boxes appear a couple of times: 在启动时,这些消息框会出现几次:
My error log shows: 我的错误日志显示:
A first chance exception of type 'System.TypeInitializationException' occurred in Skillconomy.Buddy.exe
类型'System.TypeInitializationException'的第一次机会异常发生在Skillconomy.Buddy.exe中
Additional information: The type initializer for 'xyz' threw an exception.
附加信息:“ xyz”的类型初始值设定项引发了异常。 A first chance exception of type 'Tesseract.LoadLibraryException' occurred in Tesseract.dll MyProgram.vshost.exe Error: 0 : Failed to find dll "libtesseract302", for processor architecture x86.
Tesseract.dll MyProgram.vshost.exe中发生类型'Tesseract.LoadLibraryException'的第一次机会异常错误:0:无法找到用于处理器体系结构x86的dll“ libtesseract302”。 A first chance exception of type 'System.DllNotFoundException' occurred in Tesseract.dll
Tesseract.dll中发生类型'System.DllNotFoundException'的第一次机会异常
I know that msvcr110.dll is the Visual C++ Redistributable for Visual Studio 2012 which can be installed using a package: MSDN . 我知道msvcr110.dll是Visual Studio 2012的Visual C ++可再发行组件,可以使用软件包MSDN进行安装。 That is why I asked my customer to install the package prior to installing my software.
这就是为什么我要求客户在安装软件之前先安装软件包。 I cannot be entirely sure though, that he did.
不过,我不能完全确定他做到了。
I have tried to reproduce the issue my customer describes on my own machine. 我试图重现客户在我自己的机器上描述的问题。 First, I uninstalled all VC++ Runtime Redistributable Packages that I had installed on my development machine:
首先,我卸载了在开发机器上安装的所有VC ++ Runtime Redistributable Packages:
No effect, everything still working fine on my machine. 没效果,我的机器上一切仍然正常。
I have then removed the following files: 然后,我删除了以下文件:
The issue is reproduced, I get exactly the same behavior as described by my customer. 重现了该问题,我得到的行为与客户描述的完全相同。 Note, that the second error message box is also not showing anymore, although I have not added or moved the DLL liblept168.dll.
请注意,尽管我还没有添加或移动DLL liblept168.dll,但第二个错误消息框也不再显示。
So now, after reproducing the issue, I obviously want to fix it again: 因此,现在,在重现该问题之后,我显然想再次解决该问题:
I reinstalled the Microsoft Visual C++ Runtime Redistributables for Visual Studio 2012 an restarted my machine, but the issue is not fixed, the DLLs which I have deleted before (see above) have not been reinstalled and the issue when starting the program remains. 我重新安装了Visual Studio 2012的Microsoft Visual C ++ Runtime Redistributables,并重新启动了计算机,但问题未解决,之前未删除的DLL(请参见上文)尚未重新安装,并且启动程序时仍然存在问题。
Manually copying the DLLs which I have deleted before back to the OS directories fixes the issue, but it is not an option to ask the client to manually drag and drop DLLs to OS system folders and it does not seem to be a clean solution anyways. 手动将我之前删除的DLL复制回OS目录可以解决此问题,但是不能要求客户端手动将DLL拖放到OS系统文件夹中,这似乎不是一个干净的解决方案。
The way which I have expected to fix the issue - installing the Visual C++ Redistributable - does not have an effect, as it doesn't install the required DLLs in the place I need them. 我期望解决此问题的方式-安装Visual C ++ Redistributable-没有效果,因为它没有在我需要的位置安装所需的DLL。 Also, uninstalling the packages on my system did not reproduce the bug, so there seems to be no actual relation between the bug and the package (which is the first thing I don't understand).
另外,在我的系统上卸载软件包并不会重现该错误,因此,该错误与该软件包之间似乎没有实际关系(这是我不了解的第一件事)。 Secondly, I don't know how to provide a proper fix.
其次,我不知道如何提供适当的修复程序。 So my questions are:
所以我的问题是:
A. Why is there no relation between the Visual C++ redistributables and the bugs, although obviously the missing DLL (MSVCR110.DLL) is what the redistributable package is all about? 答:尽管显然缺少DLL(MSVCR110.DLL)是可再发行软件包的全部目的,但为什么Visual C ++可再发行与错误之间没有任何关系?
B. Why is the missing DLL (MSVCR110.DLL) not installed in the OS folders by the installer package? B.为什么安装程序包没有在OS文件夹中安装缺少的DLL(MSVCR110.DLL)?
C. Should MSVCR110.DLL exist in the OS folders anyway and what could be reasons it obviously doesn't on my client's machine? C. MSVCR110.DLL是否仍应存在于OS文件夹中,这又可能是它显然不在客户端计算机上的原因?
D. How can I provide a fix, that doesn't involve manual copying of DLLs? D.如何提供不涉及手动复制DLL的修复程序?
I would be very happy about answers to any of these questions or ideas on how to proceed with the issue. 对于这些问题的任何答案或关于如何进行此问题的想法,我将感到非常高兴。 Thank you so much in advance!
提前非常感谢您!
Solution: Needed to install the x86 as well. 解决方案:还需要安装x86。 (my system was x64 so i didn't think I had to).
(我的系统是x64,所以我不认为必须这样做)。
I know this is a old post but it helped me today. 我知道这是一篇旧文章,但今天对我有帮助。 I can confirm that in a clean Windows Pro 10 install (x64) installing literally all of the
VCREDIST
(x86 and x64) fixed the problem. 我可以确认,在干净的Windows Pro 10安装(x64)中,按字面意义安装了所有
VCREDIST
(x86和x64)都可以解决此问题。
在VS 2015中运行Windows应用程序时遇到相同的问题,其中我使用的是VS 2012中内置的第三方dll。当我在VS 2015中构建第三方dll并在我的应用程序中使用时,它解决了我的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.