【问题标题】:What kind of library is dos.h (static or dynamic)?dos.h 是什么类型的库(静态或动态)?
【发布时间】:2012-12-10 13:05:35
【问题描述】:

我正在为我的大学做一个项目。其中一点是我们不允许使用非静态库。在处理中断时,我想使用 dos.h 来避免使用汇编(setvect() 而不是一堆流水线代码)使事情复杂化。

考虑使用库的部分的粗略翻译是: “...只允许使用独立于平台(硬件和操作系统)的标准(静态)C/C++ 库。不允许使用系统主机或动态库 (DLL) 的特定库”

谁能告诉我 dos.h 是什么类型的库?

【问题讨论】:

  • 名称“dos.h”暗示了与“DOS”的关系,这对操作系统来说非常具体!不过,这只是一个暗示:我不知道这个标题是什么,你也没有提供任何上下文。 dos.h 是什么?您使用的是哪个dos.h?你是从哪里弄来的?我现在可以为您创建一个名为 dos.h 的文件,它将完全独立于平台(尽管它几乎肯定不会与您已有的 dos.h 文件做同样的事情)。
  • “独立于平台(硬件和操作系统)”dos.h 肯定依赖于平台(操作系统)。
  • 谢谢。我认为它不是独立的,但我不确定所以我问了。看来我将不得不以艰难的方式做到这一点。 @DanielFischer如果您将其作为答案发布,我会除外。再次感谢您的回答。 [:
  • 有点奇怪的规则。例如,如果不使用 DLL,就不可能在 Windows 上运行进程。例如,每个进程都以已经加载的 kernel32.dll 开始。我认为您需要澄清这些规则的真正含义。
  • 我正在创建自己的操作系统,以便澄清一些事情?

标签: c++ c dynamic static libraries


【解决方案1】:

头文件*.h 不是库,它只是一组定义和声明。

如果作业确实要求您使用硬件中断并且独立于操作系统,那么它是不一致的,因为不同的操作系统定义了不同的硬件中断处理方式。

我怀疑你对作业有误解,应该请你的老师澄清。

为回应评论而添加

是的,编写一个微型操作系统确实可以解释这种不一致。如上所述,kernel32.dll 可能提供了一些您想要使用的服务(例如setvect())。如果没有操作系统,那么就没有可依赖的操作系统服务,您将不得不自己编写(我想这是作业目的的一部分)。

【讨论】:

  • 我知道标头是一组定义和声明,但是当我包含时,可以说 iostream.h 我间接包含 iostream 库吗?此外,任务是创建一个小而可操作的内核。这可能是不一致的答案吗?我不确定。我想我理解了我被赋予的大部分任务。即使我不是,我也必须找到自己的方式。我所在的地方没有导师,教授也没有时间。
  • @InvaderZim - 参见上面的添加
  • 在这些情况下,您只能依赖 独立实施 所需的标头。这是 C++ 中的一个特定术语,意思是您粗略描述的内容 - 不支持操作系统等。特别是,<iostream>"dos.h" 都不是独立实现的正式一部分。
猜你喜欢
  • 2014-09-27
  • 1970-01-01
  • 2011-03-16
  • 2010-10-25
  • 2023-03-28
  • 2011-11-15
  • 2010-10-16
  • 2012-06-29
  • 2012-03-03
相关资源
最近更新 更多