32位版本的mfc100u.dll?

时间:2012-06-27 13:13:19

标签: visual-c++ mfc

我有一个使用VS2010开发的32位应用程序,但依赖性walker说它依赖于一个名为mfc100u.dll的64位文件。

这里的问题是某些计算机无法启动应用程序。

我无法找到有关此内容的明确信息。这个文件有32位和64位版本吗?如果是这样,我如何确保32位应用程序使用一个版本而64位应用程序使用另一个版本? (如果这些应用程序在同一目录中?)

如果32位有不同的名称,它是什么?

2 个答案:

答案 0 :(得分:3)

依赖性walker通常可以指示64位的DLL但是错误。运行32位应用程序时,WOW64使用称为文件系统重定向器的东西:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384187(v=vs.85).aspx

对System32目录的所有请求都被重定向到syswow64文件夹(无论您是否要它们)。

如果包含64位DLL,应用程序将无法加载,启动时会出现某种“错误图像”错误。

尝试运行32位版本的Dependency Walker,看看它是否适合您。

更新: 32位和64位版本的MFC和C运行时具有相同的名称。它们通常使用可再发行的MSI文件进行部署,Windows将在运行时处理链接。但是,如果您必须将特定版本链接到您的应用,则需要将它们部署在与应用相同的文件夹中。不要尝试在同一文件夹中混合使用32/64位版本。以下是微软就此主题所说的话:

http://msdn.microsoft.com/en-us/library/ms235264.aspx

注意:只是为了使问题复杂化,同一文件有不同的可再发行版本,例如: VS2010 SP1版本。

答案 1 :(得分:0)

msvcr100.dll要么不是设计为在Windows上运行,要么包含eror。尝试使用原始安装介质再次安装程序,或与系统管理员或软件供应商支持联系。