在.NET編譯器(csc.exe)中,我可以使用選項/target:exe
編譯爲一個exe文件,以保持控制檯處於打開狀態,以便我可以看到一些stderr
或「stdout `輸出。但是,我無法使用C/C++編譯器(cl.exe)實現相同的功能。命令行窗口編譯器(cl.exe)目標
我的程序使用WinMain
這意味着它是一個完整的UI應用程序。這就是爲什麼我需要保持控制檯。
在.NET編譯器(csc.exe)中,我可以使用選項/target:exe
編譯爲一個exe文件,以保持控制檯處於打開狀態,以便我可以看到一些stderr
或「stdout `輸出。但是,我無法使用C/C++編譯器(cl.exe)實現相同的功能。命令行窗口編譯器(cl.exe)目標
我的程序使用WinMain
這意味着它是一個完整的UI應用程序。這就是爲什麼我需要保持控制檯。
您需要創建控制檯應用程序的標誌是/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);
}
我忘了指定我使用'WinMain',因此我的應用程序有一個用戶界面,這不是一個簡單的命令行程序。我得到一個與該標誌的鏈接錯誤:'LIBCMT.lib(crt0.obj):錯誤LNK2019:無法解析的外部符號_main在函數中引用___tmainCRTStartup main.exe:致命錯誤LNK1120:1無法解析的外部' –
@Luca它讓你的頭腦時間! –
謝謝。用WinMain調用炒鍋添加一個主函數! –
好吧,創建一個。調用AllocConsole()。 –