繁体   English   中英

尽管安装了Visual C ++可再发行组件包,但缺少msvcr110.dll吗?

[英]msvcr110.dll is missing although Visual C++ Redistributable package is installed?

我在使用Tesseract.NET的客户端计算机上安装了.NET应用程序。 他得到以下行为:

在启动时,这些消息框会出现几次:

msvcrmissingmsg

libleptmissing

我的错误日志显示:

类型'System.TypeInitializationException'的第一次机会异常发生在Skillconomy.Buddy.exe中

附加信息:“ xyz”的类型初始值设定项引发了异常。 Tesseract.dll MyProgram.vshost.exe中发生类型'Tesseract.LoadLibraryException'的第一次机会异常错误:0:无法找到用于处理器体系结构x86的dll“ libtesseract302”。 Tesseract.dll中发生类型'System.DllNotFoundException'的第一次机会异常

我知道msvcr110.dll是Visual Studio 2012的Visual C ++可再发行组件,可以使用软件包MSDN进行安装。 这就是为什么我要求客户在安装软件之前先安装软件包。 不过,我不能完全确定他做到了。

我试图重现客户在我自己的机器上描述的问题。 首先,我卸载了在开发机器上安装的所有VC ++ Runtime Redistributable Packages:

msvcr

没效果,我的机器上一切仍然正常。

然后,我删除了以下文件:

  • C:/Windows/System32/msvcr110.dll
  • C:/Windows/SysWOW64/msvcr110.dll

重现了该问题,我得到的行为与客户描述的完全相同。 请注意,尽管我还没有添加或移动DLL liblept168.dll,但第二个错误消息框也不再显示。

因此,现在,在重现该问题之后,我显然想再次解决该问题:

我重新安装了Visual Studio 2012的Microsoft Visual C ++ Runtime Redistributables,并重新启动了计算机,但问题未解决,之前未删除的DLL(请参见上文)尚未重新安装,并且启动程序时仍然存在问题。

手动将我之前删除的DLL复制回OS目录可以解决此问题,但是不能要求客户端手动将DLL拖放到OS系统文件夹中,这似乎不是一个干净的解决方案。

我期望解决此问题的方式-安装Visual C ++ Redistributable-没有效果,因为它没有在我需要的位置安装所需的DLL。 另外,在我的系统上卸载软件包并不会重现该错误,因此,该错误与该软件包之间似乎没有实际关系(这是我不了解的第一件事)。 其次,我不知道如何提供适当的修复程序。 所以我的问题是:

答:尽管显然缺少DLL(MSVCR110.DLL)是可再发行软件包的全部目的,但为什么Visual C ++可再发行与错误之间没有任何关系?

B.为什么安装程序包没有在OS文件夹中安装缺少的DLL(MSVCR110.DLL)?

C. MSVCR110.DLL是否仍应存在于OS文件夹中,这又可能是它显然不在客户端计算机上的原因?

D.如何提供不涉及手动复制DLL的修复程序?

对于这些问题的任何答案或关于如何进行此问题的想法,我将感到非常高兴。 提前非常感谢您!

解决方案:还需要安装x86。 (我的系统是x64,所以我不认为必须这样做)。

我知道这是一篇旧文章,但今天对我有帮助。 我可以确认,在干净的Windows Pro 10安装(x64)中,按字面意义安装了所有VCREDIST (x86和x64)都可以解决此问题。

在VS 2015中运行Windows应用程序时遇到相同的问题,其中我使用的是VS 2012中内置的第三方dll。当我在VS 2015中构建第三方dll并在我的应用程序中使用时,它解决了我的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM