在调试程序的时候遇到了一个奇葩的问题,C++无法使用string。最后发现居然是MinGW64的问题
起因
在帮助别人调试vscode-debug-visualizer这个插件的时候,遇到了无法出结果的问题。经过一系列定位后发现,居然是使用了string就无法运行,而编译不会出错。
测试程序
1 | //main.c |
错误现象
使用编译指令如下
1 | g++ -g main.c -o main.exe |
结果正常,运行
1 | .\main.exe |
输出为空
使用gdb进行debug。错误如下
1 | ERROR: Unable to start debugging. Unexpected GDB output from command "-exec-run". During startup program exited with code 0xc0000139. |
解决方案
在stackoverflow上找到解决方案。
从MinGW
的安装目录里面找到bin
文件夹。将里面的libstdc++-6.dll
拷贝到工作目录。目录结构如下
1 | + .vscode |
再次进行编译、运行
1 | g++ -g main.c -o main.exe |
输出
1 | {"kind":{"graph":true},"nodes":[{"id":"1"},{"id":"2"}],"edges":[{"from":"1","to":"2"}]} |
gdb的debug结果正常
吐槽
这个问题在7年前就被提出了,居然现在还有。MinGW真是坑啊,用了环境变量也没用。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 qxdn的乐园!
评论
TwikooDisqus