链接器未显示我的Class.cpp

时间:2019-03-25 02:01:28

标签: c++ class visual-studio-code

我正在尝试使用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

2 个答案:

答案 0 :(得分:2)

听起来IDE只是在编译main.cpp。您需要找到正在编译main.cpp的命令,并确保它还将fan.cpp编译为fan.obj。您还需要确保main.objfan.obj都传递给链接器(链接器将生成可执行程序main.exe或其他任何东西)。

这里涉及两个步骤:

  1. cpp-> obj(将每个源文件编译成一个匹配的目标文件)
  2. obj-> exe(将许多目标文件链接到可执行文件中)

答案 1 :(得分:0)

我想制作一个CMakeLists.txt文件,并将main.cpp和fan.cpp添加到add_executable部分中。然后,VS可以通过CMake处理和运行文件。