我试图在一个单独的头文件和cpp文件中编写一个C ++类,使用VS Code作为我的IDE,带有'run'和'C ++'扩展。
main.cpp中
#include "Fan.h"
int main() {
Fan fan1;
return 0;
}
Fan.h
#ifndef FAN_H
#define FAN_H
class Fan {
public:
Fan();
};
#endif
Fan.cpp
#include "Fan.h"
#include <iostream>
using namespace std;
Fan::Fan() {
cout << "Fan Class" << endl;
}
我真的似乎无法找到任何明显错误的东西。我想知道它是否是VS Code的设置问题。
如果我将main.cpp中的#include“Fan.h”更改为“Fan.cpp”,它可以正常工作,这使我认为代码可以工作,但链接器设置不正确。
非常感谢任何帮助!
编辑:好的,所以我尝试了在不同的IDE中的代码,它的工作原理。这与VS Code有关。这是错误:
[Running] cd "c:\Users\<USER>\Desktop\Fan\" && g++ tempCodeRunnerFile.cpp -o tempCodeRunnerFile && "c:\Users\<USER>\Desktop\Fan\"tempCodeRunnerFile
C:\Users\<USER>\AppData\Local\Temp\cclMFKxO.o:tempCodeRunnerFile.cpp:(.text+0x57): undefined reference to `Fan::Fan()'
collect2.exe: error: ld returned 1 exit status
听起来IDE只是编译main.cpp
。您需要找到编译main.cpp
的命令,并确保它还将fan.cpp
编译为fan.obj
。您还需要确保将main.obj
和fan.obj
都传递给链接器(生成可执行程序,main.exe
或其他)。
这里涉及两个步骤:
我想说制作一个CMakeLists.txt文件并将main.cpp和fan.cpp添加到add_executable部分。然后VS可以通过CMake处理和运行文件。