建议直接看本文的 reference: https://zhuanlan.zhihu.com/p/81681440
我碰到的就这样的一个栗子:
workerManager.h 文件:
#pragma once
#include<iostream>
using namespace std;
class WorkerManager{
public:
WorkerManager();
~WorkerManager();
};
workerManager.cpp 文件:
#include "workerManager.h"
WorkerManager::WorkerManager(){}
WorkerManager::~WorkerManager(){}
主cpp文件:
#include<iostream>
using namespace std;
#include "workerManager.h"
int main(){
WorkerManager wm;
return 0;
}
就是要在 main 函数中实例化别的文件里的类,但是VScode的code Runner运行了几次,总是返回:
PS X:\C++> cd "x:\C++\" ; if ($?) { g++ x.cpp -o x} ; if ($?) { .\x}
X:\X\Local\Temp\cc6hKPiA.o:x.cpp:(.text+0x1b): undefined reference to `WorkerManager::WorkerManager()'
X:\X\Local\Temp\cc6hKPiA.o:x.cpp:(.text+0x2c): undefined reference to `WorkerManager::~WorkerManager()'
collect2.exe: error: ld returned 1 exit status
离谱,搜了一下原来是g++ 的参数没给够,要把那个 workerManager.cpp 也加进来
即:
PS X:\C++> cd "x:\C++\" ; if ($?) { g++ x.cpp workerManager.cpp -o x} ; if ($?) { .\x}
也就是以后要引外部的类或者函数,要将外部cpp文件也扔到 g++ 的参数里 不配置的话,VScode 的 Code Runner 没办法直接运行了
reference
"undefined reference to XXX"问题总结 :https://zhuanlan.zhihu.com/p/81681440
|