命令行窗口编译器(cl.exe)目标

时间:2011-02-11 14:51:40

标签: .net c++ c windows

在.NET编译器(csc.exe)中,我可以使用选项/target:exe编译成一个可以使控制台保持打开状态的exe,这样我就可以看到一些stderr或`stdout``输出。但是,我无法使用C / C ++编译器(cl.exe)实现相同的功能。

我的程序使用WinMain,这意味着它是一个完整的UI应用程序。这就是我需要保留控制台的原因。

1 个答案:

答案 0 :(得分:2)

创建控制台应用程序所需的标志是/subsystem:console,请查看MSDN文档about it。它实际上是链接器阶段的标志:

link /out:foo.exe /subsystem:console a.obj b.obj
但是,您可以告诉编译器在调用链接器时使用某些标志:

cl /flags /link /subsystem:console

因为您需要main()才能使链接正常工作,所以请提供一个简单的WinMain()

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