C++;32位应用程序尝试使用64位MFC DLL < >我将一个大型C++应用程序从Visual Studio 6迁移到VS2013。我已经建立了exe和DLL。我已经解决了很多问题,我能够开始这个项目。程序启动后立即停止运行。在使用Dependency Walker之后,我认为问题在于我的32位EXE和DLL试图使用64位版本的MFC DLL。下面是一个屏幕截图:

C++;32位应用程序尝试使用64位MFC DLL < >我将一个大型C++应用程序从Visual Studio 6迁移到VS2013。我已经建立了exe和DLL。我已经解决了很多问题,我能够开始这个项目。程序启动后立即停止运行。在使用Dependency Walker之后,我认为问题在于我的32位EXE和DLL试图使用64位版本的MFC DLL。下面是一个屏幕截图:,c++,dll,mfc,32bit-64bit,32-bit,C++,Dll,Mfc,32bit 64bit,32 Bit,我的理解是32位应用程序应该自动使用位于C:\Windows\SysWow64目录中的DLL;但这在这里似乎没有发生 我在项目设置中查找了一些明显的东西,这些东西可能会解决这个问题,但我没有找到任何东西。我想知道你们中是否有人有过这个问题,如果有,你们做了什么来解决它 谢谢你的帮助 问候,, Mike我要感谢IInspectable指出了进程监视器的问题。我没有找到PM的特定替换工具,但我使用了VisualStudio的调试->窗口->模块对话框工具。我将调试器附加到可执行文件,并看到以下内容:

我的理解是32位应用程序应该自动使用位于C:\Windows\SysWow64目录中的DLL;但这在这里似乎没有发生

我在项目设置中查找了一些明显的东西,这些东西可能会解决这个问题,但我没有找到任何东西。我想知道你们中是否有人有过这个问题,如果有,你们做了什么来解决它

谢谢你的帮助

问候,,
Mike

我要感谢IInspectable指出了进程监视器的问题。我没有找到PM的特定替换工具,但我使用了VisualStudio的调试->窗口->模块对话框工具。我将调试器附加到可执行文件,并看到以下内容:

这表明我最初的想法(DLL指向错误的系统目录)是错误的。这是一种解脱

当然,这个问题我又回到了原点,但至少我没有在转移注意力后浪费时间

谢谢大家的帮助!我很感激

真诚地,
迈克

DependencyWalker过去是一个值得信赖的工具,现在是时候了。今天,它经常被弄糊涂。如果您的应用程序确实启动了,它就不能与具有错误位的DLL进行静态链接。不要相信依赖你的人。使用另一个工具来诊断问题。@IInspectable什么工具?您可以使用Process Monitor(从Microsoft免费下载)来查看要加载的文件。如果在调试器下运行,您可以看到模块列表中加载了哪些文件。@sergiol:可用于跟踪、系统查找DLL的位置以及哪些DLL。还有其他的工具。不过,正如前面所解释的,我怀疑这是一个位不匹配的问题