Win7 x64 运行程序显示“无法找到函数 GetFileVersionInfoExA,程序无法正常运行”,有无办法修复此错误?

2023-01-01 18:39:16 +08:00
 Apol1oBelvedere
Win7 x64 运行程序显示“无法找到函数 GetFileVersionInfoExA,程序无法正常运行”,有无办法修复此错误?此程序需要在 Win7 x64 上使用。
1105 次点击
所在节点    问与答
13 条回复
ysc3839
2023-01-01 19:00:03 +08:00
试试修复系统文件或者重装系统?
GeruzoniAnsasu
2023-01-01 19:10:14 +08:00
根据一个找到的表格: https://j00ru.vexillium.org/blog/win7_vs_win8/exports/KernelBase.dll.html

GetFileVersionInfoExA 这个 API 在 win7 以上版本直接从 kernelbase.dll 导出
而根据 MSDN 的文档: https://learn.microsoft.com/zh-cn/windows/win32/api/winver/nf-winver-getfileversioninfoexa
这个 API 由 Api-ms-win-core-version-l1-1-0.dll 导出

所以猜测是新版本环境链接了 kernelbase.dll 在 win7 上无法找到入口导致的。
可以先试试能不能在程序目录下放一个同名 dll 转发一下 API 调用,如果不行的话尝试直接改导入表指向 win7 版本的 dll
maolaohei
2023-01-01 19:11:51 +08:00
你可以尝试安装一下 vc 运行库
jimages
2023-01-01 19:19:21 +08:00
开兼容模式了?
Apol1oBelvedere
2023-01-01 19:43:54 +08:00
@ysc3839 已重装官方版 Win7 未起作用。
@maolaohei 2008-2019 所有 x86 、x64 vc 运行库安装后未起作用。
@jimages 开启兼容模式未起作用。
@GeruzoniAnsasu 在程序目录下放一个同名 Api-ms-win-core-version-l1-1-0.dll 未起作用。
GeruzoniAnsasu
2023-01-01 19:47:42 +08:00
@Apol1oBelvedere 用 dependency walker (
https://www.dependencywalker.com
https://github.com/lucasg/Dependencies

看一下,能看到缺少的 API 以及 dll 。

如果导入 dll 的名字写了绝对路径,那么在同目录下同名 dll 就劫持不了。然后就算用同名劫持的办法你也必须保证提供一个有相同签名 API 的文件
ysc3839
2023-01-01 19:50:09 +08:00
@Apol1oBelvedere 给一下报错的完整截图?以及看看程序目录下有没有 version.dll ,有的话删除试试?
Apol1oBelvedere
2023-01-01 20:27:44 +08:00
@ysc3839

有 version.dll ,但是需要这个 dll 不能删除。
ysc3839
2023-01-01 20:43:54 +08:00
@Apol1oBelvedere 不可能不能删除,这个是系统自带的 DLL
felixlong
2023-01-01 20:49:57 +08:00
换用老版本的 visual studio 编译试试。最新版的 visual studio 编译出的程序应该不支持 Win7 了。
felixlong
2023-01-01 21:04:11 +08:00
如果要用最新的 visual studio 的话。 好像需要安装对应版本的 redistributable.
“Installing the VS2019 redistributable”
patrickyoung
2023-01-01 21:15:35 +08:00
这个大概率是新版本 vs 在 w10+版本编译出来不兼容了,重新获取一个发行包吧。如果是 Qt 写的应用,装个 Qt 试试。
qscasdqwezxc
2023-01-01 21:19:00 +08:00
修改导入表

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/905947

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX