编译-链接.cpp和头文件时出错

罗兰德夫

我正在尝试将.cpp实现文件与头文件链接-我从mac终端收到此错误消息-

rowlandev:playground rowlandev$ g++ main.cpp -o main
Undefined symbols for architecture x86_64:
  "Person::Person()", referenced from:
      _main in main-32e73b.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这是我的cpp文件中的代码:

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

using namespace std;

Person::Person() {
    cout << "this is running from the implementation file" << endl;
}

这是我主要功能的代码:

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

using namespace std;

int main() {
    Person chase;
}

这是我的头文件中的代码:

  #include <string>

    using namespace std;


    #ifndef playground_h
    #define playground_h

    class Person {
    public:
        Person();
    private:
        string name;
        int age;
    };


    #endif /* playground_h */

我该怎么做才能解决此错误?随意添加我可以做的其他事情来改进我刚刚编写的代码。向任何事物开放。

Kartik Prabhu

尝试阅读源代码中的可执行文件时,这是一本好书,以了解发生了什么:编译/链接过程如何工作?

这里发生的是链接器不知道在Person::Person()中调用的main()位置。请注意,当您调用g ++时,从未为它提供过为其编写代码的文件Person::Person()

调用g ++的正确方法是: $ g++ -o main main.cpp person.cpp

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C头文件和编译/链接

在Visual Studio中为函数定义和头文件编译单独的.cpp文件

在 Ubuntu WSL 中使用 gcc 编译 .c 和头文件时遇到问题

使用项目模板时,防止Xcode 6.3链接默认库和头文件

通过g ++编译将.so文件链接到.cpp文件

用1个main编译多个C和头文件

与MinGW交叉编译时,GetSaveFileName的链接失败

编译时make不链接数学库

使用gcc链接目标文件之前进行编译时出错

使用TextPad / G ++链接和编译C ++文件时出错,可能(可能只是语法)错误?

用头文件编译不同的.cpp文件

关于在编译和链接C ++文件时的-ldl标志

编译C文件时,DRMAA- Cant的链接drmaa库

需要帮助了解C ++库,编译,链接,特定项目的头文件

Visual Studio C编译器未将头文件链接到其源副本

用g ++编译器链接hpp和cpp问题

如何将使用emcc从cpp文件编译的.bc文件与项目符号库链接?

为什么修改了源文件和头文件,但是没有重新编译makefile

在 main.cpp 以外的文件中包含头文件时出现链接器错误

编译与静态链接

C ++编译链接

编译动态链接内核

C ++编译链接

交叉编译库链接

其中只编译源文件但不链接目标文件的 senarios

使用CPP代码编译和链接R软件包时出现奇怪的SHLIB行为

尝试在Vue中建立电子邮件链接时编译模板时出错

如何在 Linux 中编译 ISPC 代码并将其与普通 cpp 文件链接?

如何仅将Swig与已编译的dll和头文件一起使用