是否有真正的64位版本的msvcr80.dll?如果没有,为什么不呢?

时间:2011-07-01 21:13:55

标签: c++ visual-studio-2010

我已阅读链接 ,它回答了是否有64位版本的Visual Studios(Visual Studio 64 bit?)的问题。简单的答案是 ,但32位Visual Studio开发环境可以生成64位可执行文件。

问题

1)是否有64位版本的Microsoft可再发行库 msvcr80.dll ?我在我的Windows 7,64位计算机上安装了可再发行程序包,winsxs子目录中的所有副本(共7个)在标题部分中指示它们是32位。 / p>

2)是不是真的:

a)32位可执行文件无法加载64位dll?

b)64位可执行文件无法加载32位dll?

c)如果确实所有版本的msvcr80.dll都是真的32位,如每个版本的标题部分所示,使用Visual Studio构建的64位应用程序如何使用此功能的任何功能再分发?

如果有人找到了这个文件的真正64位版本(msvcr80.dll),即标题部分实际上声明它是64位库,请指向链接。

New: Added image of BeyondCompare Viewer to show contents of msvcr80.dll header section, indicating dll is targeted for 32 bit use...

3 个答案:

答案 0 :(得分:6)

Beyond Compare没有使用PE头来显示它 - 它正在使用版本资源,而x64 msvcr80.dll的FILEOS版本资源的值为VOS_NT_WINDOWS32(就我而言)知道没有VOS_NT_WINDOWS64)。

使用dumpbin /headers(或link /dump /headers)获取有关PE标头的信息。您将看到x64 DLL具有以下信息:

FILE HEADER VALUES
            8664 machine (x64)

答案 1 :(得分:4)

答案 2 :(得分:1)

  1. 还没有64位版本的Visual Studio,所有VS都只有32位。
  2. VS能够构建和调试64位可执行文件。
  3. 如果您的操作系统是64位,则并不意味着您需要64位VC运行时才能运行应用程序。如果应用程序是32位,则需要32位运行时,而不是64位运行时。如果应用程序是64位,是的,肯定你需要64位VC运行时。
  4. VC运行时必须与用于构建二进制文件的版本(VC8,VC9或VC10)匹配。它还必须与服务包相匹配。
  5. 32位二进制文​​件有4个字节寻址,因此32位进程无法加载64位DLL。它也可以通过其他方式实现。