刚刚在为项目搭建单元测试框架, 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了