将Window窗口程序改成Windows 控制台程序

来源:互联网 发布:golang实现tcp反向代理 编辑:程序博客网 时间:2024/06/06 01:23

刚刚在为项目搭建单元测试框架, google test必须要求在控制台下显示,因此将项目的窗口程序改成了控制台程序。

 

#pragma comment(linker, "/subsystem:console")

同时将WinMain修改成main。

 

常见错误:

1. #pragma comment(linker, "/ENTRY:main")

 

    编译时提示存在.CRT节, 运行时崩溃( _ASSERTE(_CrtIsValidHeapPointer(pUserData)))。  这   是因为vc的函数真正入口点是mainCRTStartup, 而不是main, mainCRTStartup在main开始前会对crt库进行一些初始化。

 

2.#pragma comment(linker, "/Entry: mainCRTStartup")

在main中写上代码 printf("Hello World/n");运行弹出的控制台界面并不显示Hello World, 原因便是没有指令/subsystem:console,默认的可能是/subsystem:window.另外写上/subsystem:console后,默认会找main函数当作程序入口点,因此也就不需要/Entry:mainCRTStartup了