在Win 8.1下c ++ / cli DLL失败

时间:2014-06-20 21:18:14

标签: windows winapi dll c++-cli mixed-mode

我已经写了一个Win32 / net DLL,它在Win XP,Win7和8下工作正常,但在Win 8.1下它失败了。

Dependency Walker说:找不到API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL (user32.dll将调用它们)

谷歌意味着,MS在8.1中更改了一些系统DLL(并忽略了兼容性),因此很多程序都有同样的问题。

未找到"文件的完整列表":

API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL
API-MS-WIN-CORE-PRIVATEPROFILE-L1-1-1.DLL
MSVCR120.DLL
API-MS-WIN-CORE-SHUTDOWN-L1-1-1.DLL
API-MS-WIN-SERVICE-PRIVATE-L1-1-1.DLL
EXT-MS-WIN-NTUSER-UICONTEXT-EXT-L1-1-0.DLL
IESHIMS.DLL

有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:19)

依赖Walker的静态分析是不可靠的。 Dependency Walker基于静态分析报告这些DLL的问题并不意味着这确实是您的问题。完全精细的可执行文件报告问题是正常的,正如您在静态分析中描述的那样,但执行得非常好。

现在我正在查看Dependency Walker对我的应用程序的评估,我会看到完全相同的文件列表。但该应用程序运行良好。简单地说,你正在看一个误报。

升级操作系统时,Microsoft肯定不会忽略兼容性。相反,它保持了很好的兼容性。

如果您想使用Dependency Walker调试本机DLL的依赖性问题,那么您确实需要使用“配置文件”菜单在动态模式下使用它。这将告诉您哪个依赖项无法在运行时加载,如果确实这是您的问题。但是,根据管理和非托管之间的平衡确切位置,可能是Dependency Walker不适合这项工作。

您的问题可能不是本机依赖项的问题。第一步是让您准确诊断出问题所在。这超出了这个问题的范围,因为我们没有您遇到的任何错误的详细信息。