C++ C+中未定义的符号构建+;关于马科斯

C++ C+中未定义的符号构建+;关于马科斯,c++,macos,linker-errors,C++,Macos,Linker Errors,在macOS 10.15上的.cpp文件中实现类成员函数时,显示错误: clang:架构x86\u 64的未定义符号:错误: “Circle::Area()”,引用自: _main-4cfa92.o中的main “圆::圆(双)”,引用自: _main-4cfa92.o中的main 链接器命令失败,退出代码为1(使用-v查看调用) 为了验证这种情况,我在网站上找到了一个示例进行尝试,当我将Circle.cpp文件中的函数定义复制到Circle.h文件中时,效果很好,但当函数声明分别位于Circ

在macOS 10.15上的.cpp文件中实现类成员函数时,显示错误:

clang:架构x86\u 64的未定义符号:错误:
“Circle::Area()”,引用自:
_main-4cfa92.o中的main
“圆::圆(双)”,引用自:
_main-4cfa92.o中的main
链接器命令失败,退出代码为1(使用-v查看调用)
为了验证这种情况,我在网站上找到了一个示例进行尝试,当我将Circle.cpp文件中的函数定义复制到Circle.h文件中时,效果很好,但当函数声明分别位于Circle.h和Circle.cpp文件中时,会发生错误

//Circle.h

#ifndef CIRCLE_H
#define CIRCLE_H

class Circle
{
private:
    double r;//radius
public:
    Circle();//constructor
    Circle(double R);//The constructor
    double Area();//computing area
};

#endif

看起来您没有在编译步骤中包括
Circle.cpp
。确保同时包含
main.cpp
Circle。cpp

看起来编译步骤中没有包含
Circle.cpp
。确保同时包括
main.cpp
Circle.cpp

tl的可能副本;dupe的dr-您需要将所有cpp文件编译并链接在一起。从未真正使用过铿锵,但可能它在gcc-
clang[flags]main.cpp Circle.cpp中看起来确实如此。如果OP发布了他们正在使用的构建系统,这将非常有用。看起来他们是在手工编译每个源文件,即使是专业人士也很辛苦。@Yksisarvinen谢谢,我通过Visual Stdio Code extension:coderunner运行它,它一次只自动编译一个cpp文件,可能是tl的副本;dupe的dr-您需要将所有cpp文件编译并链接在一起。从未真正使用过铿锵,但可能它在gcc-
clang[flags]main.cpp Circle.cpp中看起来确实如此。如果OP发布了他们正在使用的构建系统,这将非常有用。看起来他们是在手工编译每个源文件,这对专业人士来说都是一项艰巨的工作。@Yksisarvinen谢谢,我通过Visual Stdio Code extension:coderunner运行它,它一次只自动编译一个cpp文件。这是一个注释,不是答案。谢谢,它很有效。我运行它时抛出了Visual Stdio代码扩展名:coderunner,它只自动编译main.cpp这是一条注释,不是答案。谢谢,它可以工作。我运行它时抛出visualstdio代码扩展名:coderunner,它只自动编译main.cpp
//Circle.cpp

#include "Circle.h"

Circle::Circle(){
    this->r=5.0;
}
Circle::Circle(double R){
    this->r=R;
}
double Circle::Area(){
    return 3.14*r*r;
}
//main.cpp

#include <iostream>
#include "Circle.h"

using namespace std;

int main(){
    Circle c(3);
    cout<<"Area="<<c.Area()<<endl;
    return 0;
}