关于CodeBlocks中stdc++-6.dll缺失的小问题

前一阵子在用CodeBlocks刷OJ(也并不是什么很难的算法,背包问题而已)时,遇到了个小麻烦,按下F9编译运行(有的人习惯用鼠标去点那个小button,多麻烦啊)后,Windows给我跳出个小窗说是stdc++-6.dll缺失,意思是让我修复一下这个文件。

这个文件不难找,随便搜一下就能下到。但问题是下完了放哪?看了看网上的建议,貌似应该放到C盘的system32里面。

我按照这个来了,尝试编译运行,发现又跳出来所谓”libgcc_s_sjlj-1.dll“这个东西缺失,想要的(编译运行后能得到的)控制台程序还是没有。

在网上到处搜了搜,最终明白这是个动态链接库的问题。

C++文件的编译运行有两种链接方式,动态链接和静态链接,其具体分析和区别可以参考这篇博客。

这里只讨论解决这个问题的简单方案。如果codeblocks版本是10.12以上,且编译器为MinGW,那么可以按照如下步骤解决这个小小的问题:

方案A:将链接方式设置为静态链接,打开codeblocks,settings -> compiler -> global compiler settings ->(保险起见,可以先重置编译器,即reset defaults) -> linker settings -> other linker options ,在空白栏中加入“-static”指令。效果如图:

方案B:修复动态链接库,这些dll文件一般存放在C:\Program Files (x86)\CodeBlocks\MinGW\bin 中,可以将别人的没出错的dll全部拷贝过来,也可在网络下载。重启电脑,打开codeblocks即可。

当然两个方案一起用,鲁棒性更强。

如果codeblocks版本不同,编译器也不同,也可仿照以上方法一试,不过不保证有效。为了避免dll问题,以及确保编程时的好心情,建议在使用IDE的时候关闭杀毒软件(无论是国产的还是国外的)和XX管家之类的程序,这些有时候会误报你自己写的小程序,并且有可能影响到dll文件。

你可能感兴趣的:(关于CodeBlocks中stdc++-6.dll缺失的小问题)