相信很多人碰到过这个问题,就是在使用vs2019时,即使是一个非常简单的程序,如,
#include <stdio.h>
int main( int argc, char* args[] ) {
printf("Testing");
return 0;
}
在 Debug模式(调试状态)下,也会出现程序卡死在printf的情况。
针对这种情况,网上有很多说法,例如,
visual c++ - Printf is not printing anything to output? C++ SDL - Stack Overflowhttps://stackoverflow.com/questions/11068565/printf-is-not-printing-anything-to-output-c-sdl这 里的办法有添加各种预定义,或者设置程序的属性为Console(链接--系统--SUBSYSEM:CONSOLE)等等。
然而查找一番后,发现这些貌似都不是问题的根本原因;
我的解决办法是这样的,
(1)找到解决方案所在的文件夹,你会发现里面有个名字叫做".vs"的隐藏文件;
(2)关闭你的VS2019,然后删除这个文件夹;
(3)然后再启动VS2019,重新编译调试
问题解决。
这个问题的根本原因,是因为项目在调试过程中,由于一些不知名的原因,vs2019为了兼容传统c语言和c++库,生成了一些不必要的跳转指令,也可能是为了调试之类的原因吧。这些指令使VS2019不能正确链接到相应的函数。这本身是VS2019的一个BUG,因为各种库之间的复杂关系,目前可能没有好办法可以回避。
本文结束。