【发布时间】:2011-03-03 09:17:26
【问题描述】:
我的公司总是遇到由于“运行时”或缺失而无法运行的软件问题。我经常听到人们这么说(您需要 32 位运行时、Microsoft 运行时等)。
具体指的是什么? DLL 文件?有些不同?谁能解释一下?
【问题讨论】:
标签: runtime
我的公司总是遇到由于“运行时”或缺失而无法运行的软件问题。我经常听到人们这么说(您需要 32 位运行时、Microsoft 运行时等)。
具体指的是什么? DLL 文件?有些不同?谁能解释一下?
【问题讨论】:
标签: runtime
运行时基本上是代码运行的时间(相对于编译时或链接时)。
在您所看到的上下文中,它表示运行时库,即加载执行程序所需的那些库。
这是动态链接的东西(DLL 或共享对象),因为不能丢失静态链接的代码(它在可执行文件本身中)。
一个典型的例子是依赖 Microsoft 的 C 运行时或 .NET 库,但不随您的产品提供它们。这意味着你的可执行文件可以在任何已经有这些库的机器上运行(例如那些安装了 Visual Studio 的机器),但不一定是你想要运行代码的每台计算机。
我回答了一个问题here,关于静态和动态链接之间的区别,希望能增加您的知识。动态链接允许您更新应用程序的某些部分,而无需重新编译或重新链接。您可以通过放入新版本的 DLL 来做到这一点。不幸的是,将该代码放在单独的文件中意味着它可能会丢失。
这可能是问题的一个原因,但我怀疑最有可能的只是有人没有很好地完成他们的安装代码,否则需要的所有东西都会安装。
【讨论】:
在这种情况下,runtime 是runtime library - 一个共享库(在 Windows 上实际上是一个 DLL),最常具体指的是提供语言基本功能的库。它实现了被认为是“内置”语言核心的功能。因此,如果没有安装需要运行时库的编译器编译的程序,或者如果程序是专门静态链接的(所需的一切都打包到可执行文件中),则不会运行任何程序。
【讨论】:
给你一个实际的例子 - 这里是一些常见运行时的链接:
这些是系统范围的安装 - 因此任何需要特定运行时的软件都可以在安装后使用它。
【讨论】:
他们可能指的是微软的第 3 方库和 .NET 框架。
如果应用程序是用 .NET 语言编写的,例如,您公司的应用程序可能会使用一些 3rd 方库,例如 MFC、ATL 等。 C#、VB.NET,如果您使用 Java 进行开发,则必须安装 JRE(Java Runtime env)才能运行应用程序。
如果客户的机器上未安装/部署所需的 dll/框架,您可能会收到“运行时错误”。
这是一个部署问题 - 可以通过正确的安装过程解决 - 例如安装程序可以检查是否安装了所需的框架,如果没有安装它作为安装过程的一部分。
【讨论】: