今天是2020年6月30日,记一次莫名其妙的程序BUG。
最近闲来无事在复写我之前做过的一个小项目,有一个功能是读取文件并把内容打印在控制台上。但是一直出错,让我很摸不着头脑,查阅了很多资料后发现代码是没有任何问题的,因为我写同样的代码在DEV-C上完全没有问题,但到了VS2013上就一直无法打印出内容。
最后究其原因应该是无法读取文件,所以无法打印出内容。而且在不调试的模式下程序不会报错,可以正常运行,但无法正常打开文件。在调试模式下,程序会异常中断。
之前一直没有关注过VS最下方的日志,但问题就出现在这。
1>------ 已启动生成: 项目: code, 配置: Debug Win32 ------ 1> battle.cpp 1>d:\我的\XXXXXXX\code\code\battle.cpp(49): warning C4715: “TheWordOfdodging”: 不是所有的控件路径都返回值1> LINK : 没有找到 D:\我的\XXXXXXX\code\Debug\code.exe 或上一个增量链接没有生成它;正在执行完全链接1>LINK : warning LNK4098: 默认库“MSVCRTD”与其他库的使用冲突;请使用 /NODEFAULTLIB:library 1> code.vcxproj -> D:\我的\XXXXXXX\code\Debug\code.exe ========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========
最开始只看到编译成功了,就没多想,但我高亮的这两行给出了两个链接时的警告,就是因为这两个警告导致程序无法正常读取文件。
#pragma comment(lib, "msvcrt.lib")
上面这行就是出问题的罪魁祸首,当时是为了解决另一个问题而加上去的,但是好像没用到,忘了删了,谁知道最后给我搞出这么个幺蛾子。
当然是删了这行代码-_-!!!
之后的日志就是这个样子的
1>------ 已启动生成: 项目: code, 配置: Debug Win32 ------ 1> battle.cpp 1>d:\我的\XXXXXXX\code\code\battle.cpp(49): warning C4715: “TheWordOfdodging”: 不是所有的控件路径都返回值 1> code.vcxproj -> D:\我的\XXXXXXX\code\Debug\code.exe ========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========
没有了链接时的警告,问题解决了,又可以愉快地读取文件了。
最后,菜鸡如我虽然解决了问题,但并不知道这是为啥,如果有大佬看到了,还望不吝指教。