链接器没有看到我的Class.cpp

问题描述 投票:0回答:2

我试图在一个单独的头文件和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
c++ class visual-studio-code
2个回答
2
投票

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

这里涉及两个步骤:

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

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.