2014-02-26 84 views
0

我在Windows 7機器上使用Visual Studio 2012。 I7處理器。作爲x86構建C++/CLI不會產生x86輸出dll?

我有一個託管C++/CLI庫。該項目還引用了一個Native C++靜態庫。 我有一切爲x86配置。

然而,當我建的,如果我檢查所生成的dll與CorFlags它說:

PE:PE32

CorFlags:24

ILONLY:0

32BIT:0

簽字:1

根據this的帖子,這意味着我的DLL是AnyCPU?我試圖找到更多關於如何解釋標誌的文檔,但我沒有發現任何不同。

我很困惑,如果我用配置爲「x86」的平臺構建,不應該32Bit標誌爲1?

我是否缺少一些額外的配置?

回答

4

這對混合模式組件來說有點怪異。 ILONLY標誌在這裏占主導地位。將它設置爲0時,它會告訴CLR程序集包含多於MSIL,它還包含機器代碼。這打開了32BIT選項的相關性,只有當進程的位數與文件中機器代碼的位數一致時,程序集才能工作。

這是由可執行頭設置,IMAGE_FILE_HEADER.Machine確定。就像它爲任何包含機器代碼的可執行文件一樣。 Corflags不顯示它,你可以看到它與dumpbin.exe /標題

+0

謝謝,我可以檢查我正在建設的東西。如您所說,在「機器」標籤的「文件標題值」中,它表示x86或x64,具體取決於我的構建配置。 – Dzyann