【问题标题】:How to check which application is using msvcr80.dll?如何检查哪个应用程序正在使用 msvcr80.dll?
【发布时间】:2012-11-01 01:54:11
【问题描述】:

我有一个 .exe,它是用 MSVC2005 使用发布配置编译的。问题是当我将此 .exe 分发给其他人时,他们会收到以下消息:

"This application could not be started, because the application configuration is incorrect. In order to solve the problem you should reinstall the application."

我给了他们vcredist.exe,它解决了问题。但是,我想知道为什么这只发生在某些PC上?到目前为止,我有 1 台 PC 无法运行 .exe,而另一台可以运行 .exe。两者都安装了相同的应用程序。可以运行我的.exe的电脑安装了msvcr80.dll,不能运行的电脑没有msvcr80.dll。

有谁知道为什么有些电脑没有安装msvcr80.dll?由于两台 PC 都安装了相同的操作系统和应用程序。

有没有一些工具可以检查哪个应用程序正在使用哪个 dll?

【问题讨论】:

    标签: windows dll setup-deployment msvcrt


    【解决方案1】:

    如果某些计算机已经安装了使用 msvc 2005 构建的程序,那么您的 exe 副本就可以使用。我不认为任何版本的操作系统都预装了 msvc 可再发行组件。

    如果在应用程序运行时您想知道它是否使用特定版本的 msvc 运行时,您可以使用进程资源管理器 - 一种 Microsoft 工具,以尽可能多地显示有关进程的信息。

    【讨论】:

      【解决方案2】:

      有谁知道为什么某些PC没有安装msvcr80.dll?由于两台 PC 都安装了相同的操作系统和应用程序。

      Windows 未预装任何版本的 C 运行时库。 C 运行时库可以由运行 vcredist 的人安装,也可以通过安装依赖于它并在其自己的安装程序中包含它的副本的应用程序来安装。

      仅仅因为您正在查看的两台 PC 安装了相同的应用程序并不意味着它们具有相同的安装历史记录。也许一台 PC 安装了一个包含运行时库的应用程序,然后卸载了该应用程序,但该库被留下了。

      如果您尝试分发依赖于 C 运行时库(或 redist 包中的另一个库)的应用程序,您的选择是:

      1. 要求您的用户获取并安装 vcredist。
      2. 包含必要库的副本并将其安装在与可执行文件相同的目录中。
      3. 链接到运行时库的静态副本。
      4. 在您的 .MSI 安装程序中包含运行时库合并模块,如果尚未安装该运行时库,它将安装在公共位置。

      有没有一些工具可以检查哪个应用程序正在使用哪个 dll?

      Visual Studio 曾经附带一个名为depends.exe 的工具,该工具检查可执行文件或DLL 并传递查找所需的所有DLL。不再支持此工具,因为它在较新版本的 Windows 中不具有“并排”安装功能。但我相信有一个免费(开源?)版本的 depends.exe 可用。

      如果您只想知道某个特定的可执行文件是否直接依赖于 DLL,您可以使用 dumpbin,它是 Visual Studio 中包含的命令行工具。如果你使用dumpbin /imports myapp.exe,你可以看到它所依赖的所有DLL(但不一定是那些DLL所依赖的DLL)。

      【讨论】:

        【解决方案3】:

        回复“是否有一些工具可以检查哪个应用程序正在使用哪个 dll?”阅读this。提供 vcredist.exe 可以解决问题,因为他们的系统中没有安装 Microsoft Visual C++ 2010 Redistributable Package (x86)/最新版本。可以从Microsoft's Official Website 下载。另外,如果你对命令行感兴趣,可以看看命令tasklist

        【讨论】:

          【解决方案4】:

          静态链接 C 运行时是解决此问题的另一种方法。 这是怎么做的:Static linking

          【讨论】:

            猜你喜欢
            • 2019-04-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-08-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多