我必须如何配置 VS Code 才不会收到“未定义的引用”错误消息?

Pie*_*e8r 4 c++ visual-studio-code

我的工作环境:

\n\n

EDI:Visual Studio 代码

\n\n

C++编译器:GCC

\n\n

扩展:

\n\n

微软C/C++

\n\n

.run 代码运行器

\n\n

我的源代码:

\n\n

主程序

\n\n
#include <iostream>\n#include "personne.h"\n\nint main() {\n\n personne jojo("fabien");\n\n std::cout <<"la personne s\'appelle "<<jojo.get_nom()<<" et a " \n <<jojo.get_age()<<" ans "<<std::endl;\n\n personne titi("lena",3);\n\n std::cout <<"la personne s\'appelle "<<titi.get_nom()<<" et a " \n <<titi.get_age()<<" ans "<<std::endl;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

人员.cpp

\n\n
#include "personne.h"\n\nstd::string personne::get_nom() {\n    return nom;\n}\nint personne::get_age() {\n    return age;\n}\n\npersonne::personne(std::string n){\n    nom=n;\n    age=0;\n}\n\npersonne::personne(std::string n, int a) {\n    nom=n;\n    age=a;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

人员.h

\n\n
#ifndef __PERSONNE__\n#define __PERSONNE__\n\n#include <string>\n\nclass personne {\n    std::string nom;\n    int age;enter code here\n\npublic :\n    std::string get_nom();\n    int get_age();\n\n    personne(std::string);\n    personne(std::string, int);\n};\n\n#endif // __PERSONNE__\n
Run Code Online (Sandbox Code Playgroud)\n\n

错误消息:

\n\n
\n
\n

Windows PowerShell 版权所有 (C) Microsoft Corporation。所有权利 r\xc3\xa9serv\xc3\xa9s。

\n
\n\n

PS T:\\VSCC++\\LEssentiel> cd "t:\\VSCC++\\LEssentiel\\第 2 章 la\n 面向编程对象\\la_zim\\" ; if ($?) { g++ main.cpp -o\n main } ; if ($?) { .\\main }\n C:\\Users\\Pierre\\AppData\\Local\\Temp\\ccKhfKRw.o:main.cpp:(.text+0x4e):\n 未定义引用\n personne::personne(std::__cxx11::basic_string<char,\n std::char_traits<char>, std::allocator<char> >)\'\n C:\\Users\\Pierre\\AppData\\Local\\Temp\\ccKhfKRw.o:main.cpp:(.text+0x72):\n undefined reference topersonne::get_age()\'\n C:\\Users\\Pierre\\AppData\\Local\\Temp\\ccKhfKRw.o:main.cpp:(.text+0x87):\n对personne::get_nom[abi:cxx11]()\'\n C:\\Users\\Pierre\\AppData\\Local\\Temp\\ccKhfKRw.o:main.cpp:(.text+0x137):\n undefined reference to\n personne::personne(std::__cxx11::basic_string, std::allocator >, int) 的未定义引用\'\n C:\\Users\\Pierre\\AppData\\Local\\Temp\\ccKhfKRw.o :main.cpp:(.text+0x15b):\n 对personne::get_age()\'\n C:\\Users\\Pierre\\AppData\\Local\\Temp\\ccKhfKRw.o:main.cpp:(.text+0x170):\n undefined reference topersonne::get_nomabi:cxx11\'collect2.exe:\n 的未定义引用:\n 错误: ld 返回 1 退出状态 PS T:\\VSCC++\\LEssentiel\\chapitre 2 \n la 面向编程的对象\\la_zim>

\n
\n

小智 5

你需要编辑由VScode生成的task.json。\n当你运行一个带有main函数的简单.cpp文件的调试时,tasks.json的默认配置\xc2\xb4s足够了,但是如果你尝试使用带有类的个人头文件,您需要向tasks.json指示您的程序需要编译哪些额外文件。

\n

像这样:

\n
  {\n    "tasks": [\n        {\n            "type": "shell",\n            "label": "g++ build active file",\n            "command": "/usr/bin/g++",\n            "args": [\n                "-g",\n                "${file}","${fileDirname}/Node.cpp", <============= HERE <======\n                "-o",\n                "${fileDirname}/${fileBasenameNoExtension}"\n            ],\n            "options": {\n                "cwd": "/usr/bin"\n            }\n        }\n    ],\n    "version": "2.0.0"\n}\n
Run Code Online (Sandbox Code Playgroud)\n

在args部分中,我刚刚添加了额外文件 .cpp 的完整路径(ej."${fileDirname}/extrefile.cpp")。

\n

保存tasks.json并使用F5再次从具有main函数的cpp文件中运行调试。

\n