为什么MSVC 2010 32位项目链接到64位kernel32.dll?

| 我有一个Win32(32bit)DLL项目,该项目可以正确构建和链接。 DLL无法加载到32位进程中。使用DependencyWalker,我看到该DLL是32位的,但已与64位的kernel32,msvcr100d,ws2_32和msvcr100库链接。 DependencyWalker也显示错误
Error: Modules with different CPU types were found.
我已经为这个问题困扰了几个小时,但无法理解-其他人是否经历过这个问题,并找到了解决方案?     
已邀请:
简短的答案:对x86使用Dependency Walker for x86。 长答案:最初,我在MS Windows 7 OS上将Dependency Walker用于x64,并遇到了您遇到的障碍。然后,我遵循了MerickOWA关于更改搜索路径的建议(感谢MerickOWA)。尽管我仍然有一些依赖项导致“错误:找到了具有不同CPU类型的模块”。 与其搞清楚如何配置Dependency Walker以奇怪的外观搜索x86 DLL,例如\“ c:\\ windows \\ winsxs \\ amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17514_none_2b24536c71ed437a \\ GDIPLUS.DLL \”,我将Dependency Walker用于x86。对我来说就像一个魅力!     
Dependency Walker没有使用与操作系统相同的搜索路径。它具有自己的搜索路径来尝试查找DLL。您可以通过转到“选项->配置模块搜索顺序...”来查看此内容 不幸的是,它的搜索路径不包含\“ C:\\ Windows \\ SysWow64 \”(Kernel32.dll的32位版本的位置) 这就是Dependency Walker不正确地认为您的应用程序将x64 DLL与x86应用程序混合的原因。 如果您固定搜索顺序以包括SysWow64并删除对System32目录的所有引用。该错误应消失。 一种在运行应用程序时检查Visual Studio调试器或WinDbg的输出窗口的更好方法。加载时,它将列出DLL的完整路径。     
查看依赖项网站常见问题解答。 http://www.dependencywalker.com/faq.html
Q.Will Dependency Walker work with 64-bit modules?
您需要将x86版本用于32位模块,将x64用于64位模块。这意味着您需要在64位操作系统中具有2个副本并相应地使用它们。 您可以使用Windows注册表创建上下文菜单,以节省此类麻烦。
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\\dllfile\\shell]

[HKEY_CLASSES_ROOT\\dllfile\\shell\\View Dependencies]

[HKEY_CLASSES_ROOT\\dllfile\\shell\\View Dependencies\\command]
@=\"\\\\\\\\psf\\\\Public\\\\Library\\\\DEPE~K17\\\\depends.exe /dde\"

[HKEY_CLASSES_ROOT\\dllfile\\shell\\View Dependencies\\ddeexec]
@=\"[open(\\\"%1\\\")]\"

[HKEY_CLASSES_ROOT\\dllfile\\shell\\View Dependencies(32bit)]

[HKEY_CLASSES_ROOT\\dllfile\\shell\\View Dependencies(32bit)\\command]
@=\"\\\\\\\\psf\\\\Public\\\\Library\\\\DEPE~K17\\\\x86\\\\depends.exe /dde\"

[HKEY_CLASSES_ROOT\\dllfile\\shell\\View Dependencies(32bit)\\ddeexec]
@=\"[open(\\\"%1\\\")]\"

[HKEY_CLASSES_ROOT\\exefile\\shell]

[HKEY_CLASSES_ROOT\\exefile\\shell\\View Dependencies]

[HKEY_CLASSES_ROOT\\exefile\\shell\\View Dependencies\\command]
@=\"\\\\\\\\psf\\\\Public\\\\Library\\\\DEPE~K17\\\\depends.exe /dde\"

[HKEY_CLASSES_ROOT\\exefile\\shell\\View Dependencies\\ddeexec]
@=\"[open(\\\"%1\\\")]\"

[HKEY_CLASSES_ROOT\\exefile\\shell\\View Dependencies(32bit)]

[HKEY_CLASSES_ROOT\\exefile\\shell\\View Dependencies(32bit)\\command]
@=\"\\\\\\\\psf\\\\Public\\\\Library\\\\DEPE~K17\\\\x86\\\\depends.exe /dde\"

[HKEY_CLASSES_ROOT\\exefile\\shell\\View Dependencies(32bit)\\ddeexec]
@=\"[open(\\\"%1\\\")]\"
    

要回复问题请先登录注册