簡體   English   中英

構建平台目標AnyCPU EXE仍然在64位機器中顯示32位標頭

[英]Build platform target AnyCPU EXE still shows 32bit header in 64bit machine

不確定之前有沒有問過(我找不到)。 我有簡單的控制台應用程序/ ESE,並具有以下設置。

在此輸入圖像描述

我正在運行Windows 8,63bit操作系統。 和EXE目標框架.NET 4.5但是,當我編譯這個EXE時,它仍然顯示為32位EXE。

在此輸入圖像描述

由於這是“任何CPU”,我希望EXE編譯為64bit / PE32 +。

有人可以幫忙說明為什么這仍然是32位?

你覺得你錯誤解釋了CorFlags 這是一個CorFlags真值表:

CPU Architecture           PE      32BITREQ   32BITPREF
------------------------   -----   --------   ---------
x86 (32-bit)               PE32           1           0
x64 (64-bit)               PE32+          0           0
Any CPU                    PE32           0           0
Any CPU 32-Bit Preferred   PE32           0           1

如您所見,如果您將其編譯為64位而不是Any CPU ,它將僅報告PE32+ 原因是標頭必須向后兼容。 意味着如果程序集要在32位和64位的“任何CPU”中工作,那么標頭格式必須采用32位操作系統可識別的格式。 PE32+是一種僅64位的頭格式,如果該頭應用於編譯為Any CPU的程序集,則32位操作系統將無法識別PE32+頭格式。

exe文件不包含任何32位或64位代碼,它只包含IL代碼。

JIT編譯器從IL代碼創建機器代碼,平台目標確定允許JIT編譯器創建哪種機器代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM