【问题标题】:Porting from Linux to Windows, tm.sys从 Linux 移植到 Windows,tm.sys
【发布时间】:2012-07-11 20:19:32
【问题描述】:

如果这个问题含糊不清,我深表歉意,但我真的无法更具体。我有一个相当大的项目要移植到 Windows。最后用 cl 编译并链接到 link.exe 后,我运行它并得到以下“系统错误”:

程序无法启动,因为缺少 C:\Windows\SYSTEM32\tm.sys 从您的计算机。尝试重新安装程序以解决此问题。

这是一个无需安装的控制台应用程序。 tm.sys 是否对您有任何意义,也许是我错过了 Windows 在编译期间允许但现在解释奇怪的 Linux 依赖项?我正在寻找提示/猜测/任何可以运行的东西,因为我完全意识到我的描述(以及缺少代码示例)不太令人满意。

这是一个 C 项目,混合了一些 C++ 代码(C++ 可能占 1%),并且是使用 WDK 构建的。编译生成 5 个静态 .lib 文件和 1 个 .exe 文件。

【问题讨论】:

  • tm.sys 是指 Windows 内核模块……至于它是什么或为什么它会阻止您的程序启动,我不知道。你正在做的其他一切似乎都很好。
  • @Cheersandhth.-Alf 这不是病毒——这是在未连接到 Internet 的目标计算机上进行的全新安装。
  • @Conrad Meyer 你走在正确的轨道上。事实证明,我不需要使用 DDK 来构建它,因为它是用户级的,所以这本身就会导致某种依赖。 ntoskrnl.lib 是有问题的库。感谢您的见解。

标签: c++ c windows linux wdk


【解决方案1】:

问题存在于ntoskrnl.lib 中。我从源文件中删除了那个不必要的库,并且可执行文件运行良好。我不确定tm.sys 的重要性,但吸取的教训是:了解您的依赖关系!

【讨论】: