【问题标题】:What exactly is a "run-time"?究竟什么是“运行时”?
【发布时间】:2011-03-03 09:17:26
【问题描述】:

我的公司总是遇到由于“运行时”或缺失而无法运行的软件问题。我经常听到人们这么说(您需要 32 位运行时、Microsoft 运行时等)。

具体指的是什么? DLL 文件?有些不同?谁能解释一下?

【问题讨论】:

    标签: runtime


    【解决方案1】:

    运行时基本上是代码运行的时间(相对于编译时或链接时)。

    在您所看到的上下文中,它表示运行时库,即加载执行程序所需的那些库。

    这是动态链接的东西(DLL 或共享对象),因为不能丢失静态链接的代码(它在可执行文件本身中)。

    一个典型的例子是依赖 Microsoft 的 C 运行时或 .NET 库,但不随您的产品提供它们。这意味着你的可执行文件可以在任何已经有这些库的机器上运行(例如那些安装了 Visual Studio 的机器),但不一定是你想要运行代码的每台计算机。

    我回答了一个问题here,关于静态和动态链接之间的区别,希望能增加您的知识。动态链接允许您更新应用程序的某些部分,而无需重新编译或重新链接。您可以通过放入新版本的 DLL 来做到这一点。不幸的是,将该代码放在单独的文件中意味着它可能会丢失。

    这可能是问题的一个原因,但我怀疑最有可能的只是有人没有很好地完成他们的安装代码,否则需要的所有东西都会安装。

    【讨论】:

    • 太好了,谢谢!那么那些“运行时”是 DLL 吗? (正如我所料)我知道它不是 lib 文件,但我认为可能还有其他东西。谢谢!
    • 是的,在 Windows 下就差不多了。它们在其他平台上的名称不同,但概念相同。
    【解决方案2】:

    在这种情况下,runtimeruntime library - 一个共享库(在 Windows 上实际上是一个 DLL),最常具体指的是提供语言基本功能的库。它实现了被认为是“内置”语言核心的功能。因此,如果没有安装需要运行时库的编译器编译的程序,或者如果程序是专门静态链接的(所需的一切都打包到可执行文件中),则不会运行任何程序。

    【讨论】:

      【解决方案3】:

      给你一个实际的例子 - 这里是一些常见运行时的链接:

      这些是系统范围的安装 - 因此任何需要特定运行时的软件都可以在安装后使用它。

      【讨论】:

        【解决方案4】:

        他们可能指的是微软的第 3 方库和 .NET 框架。

        如果应用程序是用 .NET 语言编写的,例如,您公司的应用程序可能会使用一些 3rd 方库,例如 MFC、ATL 等。 C#、VB.NET,如果您使用 Java 进行开发,则必须安装 JRE(Java Runtime env)才能运行应用程序。

        如果客户的机器上未安装/部署所需的 dll/框架,您可能会收到“运行时错误”。

        这是一个部署问题 - 可以通过正确的安装过程解决 - 例如安装程序可以检查是否安装了所需的框架,如果没有安装它作为安装过程的一部分。

        【讨论】:

          猜你喜欢
          • 2015-10-23
          • 2014-10-28
          • 2012-08-27
          • 2010-11-12
          • 2011-03-18
          • 2011-01-22
          • 1970-01-01
          相关资源
          最近更新 更多