VSCode编译含外部类的C++项目报MyClass构造函数未定义引用错误
错误原因
这是链接阶段报错,和代码语法无关。编译时仅将main.cpp纳入了编译流程,未一起编译MyClass.cpp,链接器找不到MyClass::MyClass()的具体实现,就会抛出该undefined reference错误。
解决方案
根据你实际使用的编译方式选择对应操作即可:
- 终端命令行编译:进入project目录后,编译命令带上所有cpp源文件
执行完命令即可生成可正常运行的可执行文件。g++ main.cpp MyClass.cpp -o main - 使用Code Runner插件一键运行:打开VSCode设置,搜索
Code Runner: Executor Map,进入settings.json编辑,将cpp对应的编译命令中的$fileName替换为*.cpp,修改后配置参考如下:
保存配置后重新运行代码即可正常编译。"cpp": "cd $dir && g++ *.cpp -o $fileNameWithoutExt && $dir$fileNameWithoutExt" - 使用VSCode原生C/C++扩展调试编译:打开项目下
.vscode/tasks.json文件,修改编译参数args,将原本的单文件编译项${file}替换为"${workspaceFolder}/*.cpp",匹配工作目录下所有cpp文件参与编译,参考配置如下:
保存文件后重新触发编译即可。"args": [ "-g", "${workspaceFolder}/*.cpp", "-o", "${fileDirname}/${fileBasenameNoExtension}" ]
内容的提问来源于stack exchange,提问作者Evan
相关产品推荐
相关产品推荐

