我正在尝试使用VS Code作为我的IDE(具有“ run”和“ C ++”扩展名)在单独的标头和cpp文件中编写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
答案 0 :(得分:2)
听起来IDE只是在编译main.cpp
。您需要找到正在编译main.cpp
的命令,并确保它还将fan.cpp
编译为fan.obj
。您还需要确保main.obj
和fan.obj
都传递给链接器(链接器将生成可执行程序main.exe
或其他任何东西)。
这里涉及两个步骤:
答案 1 :(得分:0)
我想制作一个CMakeLists.txt文件,并将main.cpp和fan.cpp添加到add_executable部分中。然后,VS可以通过CMake处理和运行文件。