在Windows XP上运行应用程序时出现“指定的程序无法find”错误(例外c0000139)

我们有一个在Vista和Win7上运行良好的DLL一段时间,但是当在XP上运行时,当调用LoadLibrary()来加载它时,我们得到错误“无法find指定的过程”

我已经试过通过configuration文件选项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 

我相信exceptionc0000139是'入口点未find'。

我们已经注意确保没有任何对后XP API的直接依赖(有一些,但是这些是用LoadLibrary()dynamic加载的)。 该DLL是用WINVER_WIN32_WINNT设置为0x0501 。 该库的入口点在依赖关系监视器中显示的导出中可见,并且没有明显的缺失依赖关系。 相同的应用程序运行在Vista和Win7绝对好。 早期版本的DLL在XP上运行得很好(由于这个组件的性质,很难看出哪些改变导致了事情中断)。

编辑:我我打折的其他东西:

  • Visual Studio运行时被安装
  • 来自工作DLL和不相同的清单文件

还有什么明显的我失踪了?

Solutions Collecting From Web of "在Windows XP上运行应用程序时出现“指定的程序无法find”错误(例外c0000139)"

我不知道这是否会帮助你,但我今天有与装载机捕捉完全相同的问题。 事实证明,我的问题是在depends.exe中可见,但我不知道dlls被粉红色的意义…我只有诊断出口的问题与依赖,而不是进口问题。

我的问题是,我正在使用“RegGetValue”,它只在Vista +上可用。 不幸的是,如果您在Windows XP上使用仅Vista的API,则没有适当的错误报告。 取决于在进口部分显示这样的:

在这里输入图像说明

我注意到你的问题是与coreel32.dll,而不是Advapi.dll,所以检查与取决于进口…