12
在這種情況下,我無法在MSDN上找到任何有用的信息。使用Dependency Walker,在模塊列表中,我看到控制檯和GUI的混合使用。在/ DLL中切換/ SUBSYSTEM:CONSOLE和/子系統:WINDOWS的影響
編譯DLL時會產生影響嗎?
在這種情況下,我無法在MSDN上找到任何有用的信息。使用Dependency Walker,在模塊列表中,我看到控制檯和GUI的混合使用。在/ DLL中切換/ SUBSYSTEM:CONSOLE和/子系統:WINDOWS的影響
編譯DLL時會產生影響嗎?
此選項僅對應用程序(exe
)有效,不在庫(dll
)上。
的
/SUBSYSTEM
選項指定可執行環境。子系統的選擇影響鏈接器將選擇的入口點符號(或入口點 函數)。
這不影響圖書館,它們有自己的(可選)entry point。
CyberShadow的評論後的其他信息:加載DLL時子系統字段似乎被忽略。 This article about CSRSS說(重點煤礦):
此外,每個進程與一個相關聯的,特定的子系統; 此屬性正在由接頭(編譯 過程中)設置,並且位於以下PE結構域:[...]
的/ SUBSYSTEM標誌被放置在圖像文件中 - EXE,DLL ,sys,....在構建應用程序時由鏈接器執行。這個標誌存在於EXE和DLL圖像中!看看Visual Studio鏈接器設置 - >子子句 – mox 2012-07-30 07:46:10
該標誌影響任何圖像文件。看看許多\ system32 \ *。dll(例如用/ SUBSYSTEM:CONSOLE標記的NTDLL.DLL) – mox 2012-07-30 07:49:56
@mox,所有映像文件都包含此標誌,但它不影響庫的入口點。正如你所看到的,'ntdll.dll'可以在控制檯和Windows可執行文件的地址空間中加載,而不會產生不良影響。 – 2012-07-30 07:52:10