2012-07-30 85 views

回答

12

此選項僅對應用程序(exe)有效,不在庫(dll)上。

documentation說:

/SUBSYSTEM選項指定可執行環境。

子系統的選擇影響鏈接器將選擇的入口點符號(或入口點 函數)。

這不影響圖書館,它們有自己的(可選)entry point

Cyber​​Shadow的評論後的其他信息:加載DLL時子系統字段似乎被忽略。 This article about CSRSS說(重點煤礦):

此外,每個進程與一個相關聯的,特定的子系統; 此屬性正在由接頭(編譯 過程中)設置,並且位於以下PE結構域:[...]

+0

的/ SUBSYSTEM標誌被放置在圖像文件中 - EXE,DLL ,sys,....在構建應用程序時由鏈接器執行。這個標誌存在於EXE和DLL圖像中!看看Visual Studio鏈接器設置 - >子子句 – mox 2012-07-30 07:46:10

+1

該標誌影響任何圖像文件。看看許多\ system32 \ *。dll(例如用/ SUBSYSTEM:CONSOLE標記的NTDLL.DLL) – mox 2012-07-30 07:49:56

+1

@mox,所有映像文件都包含此標誌,但它不影響庫的入口點。正如你所看到的,'ntdll.dll'可以在控制檯和Windows可執行文件的地址空間中加載,而不會產生不良影響。 – 2012-07-30 07:52:10