本文所解决问题的前提:
1.VS Code安装了对应的C/C++插件以及Code Runner插件。(不过相信写C++的应该都安装了吧)
2.对于单文件的编译用Run Code没有问题。
在用VS Code写C++的时候,定义了一个swap.cpp,main.cpp以及swap.h,然后在运行的时候发现它一直显示 undefined reference to `swap(int&, int&) 以及collect2.exe: error: ld returned 1 exit status’。
一开始我以为是自己的工程或文件出了问题,后面发现其实不是。因为如果我手动用g++对swap.cpp,main.cpp进行编译并生成可执行文件的话还是可以运行的。(g++ -g .\main.cpp .\swap.cpp -o out 这一句可以生成名字为out.exe的可执行文件。 .\out.exe 再输入这一句话就可以让程序进行运行。)
根据问题的描述可以得知,代码写的是没有问题的,而问题就出现在了编译运行。通过查资料得知用Run Code运行代码在默认情况下它只会对单文件进行编译,也就是说我在点代码运行的时候整个工程只对main.cpp进行编译。(swap.cpp内心:”我不配??“)
所以我对Run Code重新进行了配置。
(1)首先打开VSCode的设置(对应图中的①),并在拓展中找到Run Code configuration(对应图中的②)中的Executor Map(对应图中的③)。再点击settings.json(对应图中的④)。
(2)打开之后就可以看到json文件长下面这样。
(3)这时候再到中间输入code-runner.executorMap,选中第一个然后回车。
(4)可以看到这里有很多配置,可以看到cpp那一行写了g++ $fileName,这就表示g++命令在运行的时候就只执行了一个文件。
(5)此时需要把$fileName改成*.cpp(表示编译所有后缀为.cpp的文件),再进行保存 。关于C语言的编译也可以用这种方法,把上面那一行关于C的配置改了。
(6)接下来再用Run Code运行main.cpp就可以成功了!!