插件窝 干货文章 Windows XP系统运行Go程序报错“Failed to find GetTickCount64”?如何解决?

Windows XP系统运行Go程序报错“Failed to find GetTickCount64”?如何解决?

Windows GetTickCount 使用 版本 576    来源:    2025-03-13

在Windows XP系统上运行Go程序时,如果遇到“Failed to find GetTickCount64”错误,通常是因为Go程序依赖的某些API在Windows XP上不可用。GetTickCount64 是一个在Windows Vista及更高版本中引入的API函数,Windows XP并不支持这个函数。

解决方法

  1. 使用兼容的Go版本

    • 如果你使用的是较新的Go版本(Go 1.10及以上),这些版本默认会使用GetTickCount64,这会导致在Windows XP上运行时报错。
    • 你可以尝试使用Go 1.9或更早的版本,这些版本在Windows XP上运行时不会使用GetTickCount64
  2. 修改Go源码并重新编译

    • 如果你必须使用较新的Go版本,可以修改Go的源码,使其在Windows XP上运行时使用GetTickCount而不是GetTickCount64
    • 具体步骤如下:
      1. 找到Go源码中的src/runtime/os_windows.go文件。
      2. 找到getTickCount64函数的定义,并将其替换为getTickCount
      3. 重新编译Go工具链。
  3. 使用兼容性模式

    • 如果你无法修改Go源码或使用旧版本的Go,可以尝试在Windows XP上使用兼容性模式运行Go程序。虽然这并不能保证解决问题,但有时可以绕过一些兼容性问题。
  4. 升级操作系统

    • 如果可能的话,考虑将操作系统升级到Windows 7或更高版本。Windows XP已经停止支持多年,许多现代软件和库都不再兼容XP。

示例:修改Go源码

假设你使用的是Go 1.16版本,以下是修改os_windows.go文件的示例:

  1. 打开src/runtime/os_windows.go文件。
  2. 找到以下代码:

    func getTickCount64() uint64 {
       return uint64(getTickCount64Proc())
    }
    
  3. 将其替换为:

    func getTickCount64() uint64 {
       return uint64(getTickCount())
    }
    
  4. 保存文件并重新编译Go工具链。

总结

在Windows XP上运行Go程序时遇到“Failed to find GetTickCount64”错误,主要是因为Windows XP不支持GetTickCount64函数。你可以通过使用旧版本的Go、修改Go源码并重新编译、使用兼容性模式或升级操作系统来解决这个问题。