这种情况是在Windows、VS代码中使用MinGW编译和运行MinGW程序或从cmd命令行编译时遇到的问题。
第一个示例将"Hello“写入标准输出。
第二个示例运行并完成,但是没有写任何东西。
这两个示例之间的区别仅仅是在第二个示例中声明一个字符串。
当我在Windows上用Visual 2019编译第二个示例时,它正常运行。
UPDATE我发现,当我将Z:\Software\MinGW\bin\libstdc++-6.dll复制到与我的源代码相同的目录时,无论是通过VS代码默认构建任务进行编译,还是从命令行编译,它都能工作。
示例1(正确运行):
#include <iostream>
#include <string>
int main()
{
// std::string str;
std::cout << "Hello" << std::endl;
}示例2:运行时不会产生任何输出。除非在将libstdc++-6.dll复制到与源相同的目录后进行编译。
#include <iostream>
#include <string>
int main()
{
std::string str;
std::cout << "Hello" << std::endl;
}我在命令行上使用g++编译了这两个示例,并通过VS代码中的默认构建任务编译了这两个示例。
首先,用于编译这两个程序的命令行是
g++ my_program.cpp -lstdc++ -o my_program.exe
第二,tasks.json
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe build active file",
"command": "Z:\\Software\\MinGW\\bin\\g++.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "compiler: Z:\\Software\\MinGW\\bin\\g++.exe"
}
]
}发布于 2021-05-28 14:16:35
通常,当人们在VSCode中找不到程序的输出时,这是因为他们看错了标签。这种情况发生在fairly often。
在VSCode中使用F5 (或“启动调试”命令)运行程序时,活动选项卡切换到终端。
但是,当您处于调试模式时,输出将显示在"Debug Console“选项卡中(选项卡可以使用更好的名称)。
下面是您在VSCode中运行的程序。请注意底部的输出:

https://stackoverflow.com/questions/67578665
复制相似问题