2011-02-11 47 views
1

在.NET編譯器(csc.exe)中,我可以使用選項/target:exe編譯爲一個exe文件,以保持控制檯處於打開狀態,以便我可以看到一些stderr或「stdout `輸出。但是,我無法使用C/C++編譯器(cl.exe)實現相同的功能。命令行窗口編譯器(cl.exe)目標

我的程序使用WinMain這意味着它是一個完整的UI應用程序。這就是爲什麼我需要保持控制檯。

+0

好吧,創建一個。調用AllocConsole()。 –

回答

2

您需要創建控制檯應用程序的標誌是/subsystem:console,請查看MSDN文檔about it。它實際上是鏈接器階段的標誌:

link /out:foo.exe /subsystem:console a.obj b.obj 

但是,您可以告訴編譯器調用鏈接器時使用的某些標誌:

cl /flags /link /subsystem:console 

,因爲你需要一個main(),使鏈接工作,提供一個簡單的calles WinMain()

int main() { 
    return WinMain(0,0,0,0); 
} 
+0

我忘了指定我使用'WinMain',因此我的應用程序有一個用戶界面,這不是一個簡單的命令行程序。我得到一個與該標誌的鏈接錯誤:'LIBCMT.lib(crt0.obj):錯誤LNK2019:無法解析的外部符號_main在函數中引用___tmainCRTStartup main.exe:致命錯誤LNK1120:1無法解析的外部' –

+0

@Luca它讓你的頭腦時間! –

+0

謝謝。用WinMain調用炒鍋添加一個主函數! –