【问题标题】:Difference between .exe and .pe files?.exe 和 .pe 文件之间的区别?
【发布时间】:2015-11-17 12:56:07
【问题描述】:

在编译 Visual Studio C# 应用程序时会生成 PE 和 EXE 文件。 那么PE和EXE文件的主要区别是什么? 据我所知,PE文件包含

PE/COFF Headers,
CLR Headers,
CLR Data,
Meta Data,
IL code,
.data,.text...

比exe包含什么?PE与EXE有何不同?

【问题讨论】:

    标签: c# visual-studio compilation exe portable-executable


    【解决方案1】:

    可移植可执行文件 (PE) 是包含操作系统正确加载可执行代码 (.exe, .dll, ...)

    这可能包括linking、资源管理、TLS 数据等的动态库引用。

    然而,

    可执行文件 (.exe) 是表示计算机程序主要执行点的文件,也就是说,用 C# 术语来说,文件包含 Main 函数或入口点。

    【讨论】:

      【解决方案2】:

      .exe 文件是 PE 文件的子集,而 PE 文件包括 .exe、.dll 和 .ocx 文件。

      【讨论】:

        【解决方案3】:

        所以,PE代表 Portable Executable,它是 Windows 32 位和 64 位环境中可执行二进制文件的格式文件。

        据我了解,生成的PEfile 中的信息包括:

        • 标题
        • 元数据
        • CLR 数据段

        但是,IL 代码将位于 EXE 文件中,因为它应该是独立于平台的,并且在您运行应用程序时会被编译为本机代码 (Just-in time-compiler)。 PEsection 还负责 CLR 的初始化。

        请记住,PE 部分可以可执行文件中,这在大多数应用程序中更有意义。

        【讨论】:

          猜你喜欢
          • 2011-01-08
          • 2013-11-07
          • 2012-02-17
          • 2012-05-15
          • 2011-05-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-31
          相关资源
          最近更新 更多