gpt4 book ai didi

c - 在 Windows XP 上运行应用程序时出现 "The specified procedure could not be found"错误(异常 c0000139)

转载 作者:可可西里 更新时间:2023-11-01 11:21:19 25 4
gpt4 key购买 nike

我们有一个 dll 在 Vista 和 Win7 上运行良好一段时间,但在 XP 上运行时,我们在 LoadLibrary 时遇到错误 “找不到指定的过程” () 被调用加载它。

我已经尝试使用配置文件选项通过 Dependency Walker 运行它,将全局标志设置为显示加载器快照,我能从中得到的唯一看似有用的信息是:

LDR: Snapping imports for MyDll.dll from KERNEL32.dll
LDR: LdrGetProcedureAddress by NAME - RtlGetLastWin32Error
LDR: exception c0000139 thrown within function LdrpSnapIAT
Exception record: 0012E490
Context record: 0012E4A4
Context->Eip = 7C9673BE
Context->Ebp = 0012E7C0
Context->Esp = 0012E770
LDR: LdrpSnapIAT - caught exception c0000139 snapping thunks (#2)
LDR: LdrpWalkImportTable - LdrpSnapIAT #2 failed with status c0000139

我认为异常 c0000139 是“未找到入口点”。

我们已经注意确保不直接依赖于 XP 后的 API(有一些,但这些是使用 LoadLibrary() 动态加载的)。该 dll 是使用 WINVER_WIN32_WINNT 设置为 0x0501 构建的。在 Dependency Monitor 显示的 exports 中可以看到库的入口点,并且没有明显缺失的依赖项。同样的应用程序在 Vista 和 Win7 中运行得非常好。该 dll 的早期版本在 XP 上运行良好(由于此组件的性质,很难看出是哪个更改导致了问题)。

编辑:我认为我打折的其他事情:

  • 已安装 Visual Studio 运行时
  • 来自工作 dll 的 list 文件和不相同的 list 文件

还有什么明显的我遗漏的吗?

最佳答案

我不知道这是否对您有帮助,但我今天在加载程序快照方面遇到了完全相同的问题。事实证明,我的问题在 depends.exe 中可见,但我不知道 dll 为粉红色的重要性......我只诊断过依赖项的导出问题,而不是导入问题。

我的问题是我使用的是仅在 Vista+ 上可用的“RegGetValue”。不幸的是,如果您在 Windows XP 上使用仅适用于 Vista 的 API,则没有正确的错误报告。 Depends 在导入部分显示如下:

enter image description here

我注意到您的问题出在 Kernel32.dll 而不是 Advapi.dll,因此请使用 depends 检查导入...

关于c - 在 Windows XP 上运行应用程序时出现 "The specified procedure could not be found"错误(异常 c0000139),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8908112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com