尽管安装了Visual C ++ Redistributable软件包,但仍缺少msvcr110.dll?

时间:2015-03-22 11:16:28

标签: c# c++ dll

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

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

msvcrmissingmsg

libleptmissing

我的错误日志显示:

  

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

     

其他信息:' xyz'的类型初始值设定项扔了一个   例外。类型的第一次机会异常   ' Tesseract.LoadLibraryException'发生在Tesseract.dll中   MyProgram.vshost.exe错误:0:找不到DLL" libtesseract302",   对于处理器架构x86。类型的第一次机会异常   ' System.DllNotFoundException'发生在Tesseract.dll

我知道msvcr110.dll是Visual Studio 2012的Visual C ++ Redistributable,它可以使用软件包安装: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 ++运行时可再发行组件,重新启动了我的机器,但问题没有解决,我之前删除的DLL(见上文)尚未重新安装,启动程序时的问题仍然存在

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

我期望解决问题的方法 - 安装Visual C ++ Redistributable - 没有效果,因为它没有在我需要的地方安装所需的DLL。此外,卸载我的系统上的软件包并没有重现bug,所以bug和软件包之间似乎没有实际关系(这是我不了解的第一件事)。其次,我不知道如何提供适当的解决方案。所以我的问题是:

:一种。为什么Visual C ++可再发行组件和bug之间没有任何关系,尽管显然缺少的DLL(MSVCR110.DLL)是可再发行软件包的全部内容?

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

℃。 MSVCR110.DLL是否应该存在于操作系统文件夹中,这可能是因为它显然不在我客户的机器上?

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

对于如何解决问题的任何问题或想法,我会非常高兴。非常感谢你!

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

我知道这是一个老帖子,但它今天帮助了我。我可以确认在干净的Windows Pro 10安装(x64)中安装所有string&(x86和x64)修复了问题。

答案 2 :(得分:0)

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