【发布时间】:2017-09-17 15:12:05
【问题描述】:
我正在将一个大型 C++ 应用程序从 Visual Studio 6 迁移到 VS2013。我已经构建了 exe 和 DLL。我已经解决了许多问题,并且能够启动该程序。程序启动后立即停止运行。使用 Dependency Walker 后,我认为问题在于我的 32 位 EXE 和 DLL 正在尝试使用 64 位版本的 MFC DLL。这是屏幕截图:
我的理解是 32 位应用程序应该自动使用位于 C:\Windows\SysWow64 目录中的 DLL;但这似乎并没有在这里发生。
我在项目设置中查看了一些可以解决此问题的明显内容,但我没有找到任何东西。我想知道你们中是否有人遇到过这个问题,如果有,你们是怎么解决的?
感谢您的帮助!
问候, 迈克
【问题讨论】:
-
DependencyWalker 曾经是一个值得信赖的工具,现在是时候了。今天,它经常被混淆。如果您的应用程序确实启动了,它就不能静态链接到具有错误位数的 DLL。不要相信 DependencyWalker。使用其他工具来诊断问题。
-
@IInspectable 什么工具?
-
您可以使用 Process Monitor(从 Microsoft 免费下载)查看正在尝试加载的文件。如果您在调试器下运行,您可以看到模块列表中正在加载哪些文件。
-
@sergiol: Process Monitor 可用于跟踪,系统在哪里寻找 DLL,以及哪些。还有其他工具。不过,正如所解释的,我怀疑这是一个位不匹配的问题。
标签: c++ dll mfc 32bit-64bit 32-bit