1

我最近遇到了一种情况,代码动态加载一些库,将它们连接起来,然后调用所谓的“应用程序入口点”(其中一个库必须实现 IApplication.Run())。

这是一个有效的“应用程序入口点”吗?

我总是认为应用程序入口点在加载库之前,并发现在大量工作之后调用 IApplication.Run() 有点误导。

4

5 回答 5

1

术语应用程序和系统是使用如此广泛和多样化的术语,您需要与您的对话伙伴预先同意它们的含义。例如,有时应用程序是带有 UI 的东西,而系统是“无 UI”的。一般来说,你说土豆,我说土豆。

至于您使用的示例:这正是运行时(例如 .NET 或 java)所做的:加载一组库并调用应用程序入口点,即“main”方法。

因此,在您的情况下,加载库的代码执行相同的操作,并且可能在接口上调用方法,然后您可以将加载代码视为该应用程序的运行时。这只是一个观点问题。

于 2008-09-30T11:17:15.280 回答
0

术语“应用程序”可以表示您想要的任何含义。“应用程序”仅指协同工作以帮助您解决问题的资源(库、代码、图像等)的集合。

因此,要回答您的问题,是的,这是对“应用程序”一词的有效使用。

于 2008-09-30T11:12:04.217 回答
0

应用程序本身实际上没有任何意义。人们经常用它来谈论为用户提供一些价值的计算机程序。更正确的术语是应用软件,其定义如下:

应用软件是计算机软件的一个子类,它直接和彻底地将计算机的功能用于用户希望执行的任务。这应该与系统软件形成对比,系统软件涉及集成计算机的各种功能,但通常不会直接将它们应用于执行有利于用户的任务。在此上下文中,术语应用程序指的是应用程序软件及其实现。

由于应用程序实际上意味着应用程序软件,而软件是在计算机上执行任何类型任务的任何代码,我想说库也可以是应用程序。

无论如何,大多数术语都是人造的。插件不是应用程序吗?你浏览器的flash插件没有应用吗?人们说不,它只是一个插件。为什么?因为它不能自己运行,所以需要加载到一个真实的进程中。但是没有定义说只有“可以自己运行”的东西才是应用程序。图书馆也是如此。核心应用程序可能只是一个空容器,所有逻辑和功能,甚至与用户的交互,都可以由插件或库执行,在这种情况下,它更像是一个应用程序,而不是只为应用程序提供一些上下文的空容器。要运行的应用程序。将此与 Java 进行比较。一个 Java应用程序不能单独运行,它必须在 Java 虚拟机 (JVM) 中运行,这是否意味着 JVM 是应用程序,而 Java 代码只是……嗯什么?Java 代码不是真正的应用程序,而 JVM 不是一个空的运行时环境,如果没有加载的 Java 代码,它不会向最终用户提供任何东西吗?

于 2008-09-30T11:14:59.060 回答
0

我认为您所指的可能是 C/C++ 代码中的 main() 函数或 Windows 应用程序中的 WinMain。也就是说,它是通常在应用程序中开始执行的点。你的问题非常广泛和模糊——例如,你在哪个操作系统上运行它——但这可能就是你要找的。 也可能解决这个问题。

请记住,当您提出问题时,细节是您的朋友。当您向他们提供详细信息时,人们可以为您提供更好、更明智的答案。

编辑:在更广泛的背景下,从操作系统的角度考虑必须发生的事情。当用户指定他们想要运行一个应用程序时,操作系统必须从硬盘驱动器加载应用程序,然后当应用程序加载到内存中时,它必须将控制权传递给新加载占用的内存中的某个点应用程序继续执行。那将是“应用程序入口点”。当使用动态链接代码构建应用程序时,操作系统必须加载所有动态链接代码,以便将正确的应用程序映像放入内存。加载这些共享的代码并不会改变这样一个事实,即当应用程序加载到内存中时,操作系统必须有一个点可以传递控制权。

于 2008-09-30T11:18:47.117 回答
0

我认为在这种情况下,“应用程序入口点”是指“应用程序(您的代码)进入库的点”。

于 2008-09-30T11:34:43.707 回答