带有未定义参考的简单程序&截断重定位以适应错误

时间:2014-09-02 15:53:54

标签: c++ undefined-reference

好的,所以我在youtube上学习c ++教程,因为我是一个相对较新的程序员。我正在尝试学习如何在创建类时使用头文件等。在本教程中,我们将学习如何使用箭头成员选择运算符。

https://www.youtube.com/watch?v=2RP4f9beidc&list=PLAE85DE8440AA6B83&index=42

我没有使用他正在使用的IDE的代码块。我在gedit上编写代码并使用Cygwin编译和运行它。

非常感谢任何帮助!

以下是简单的代码:

Main.cpp的

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

using namespace std;



int main(){


     Sally sallyObject;
     Sally *sallyPointer = &sallyObject;



     sallyObject.printCrap();
     sallyPointer->printCrap();

}

Sally.cpp

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

using namespace std;



Sally::Sally()

{

}



void Sally::printCrap(){

    cout << "did someone say steak?" << endl;

}

Sally.h

#ifndef SALLY_H

#define SALLY_H

#include <iostream>



class Sally

{

    public:

        Sally();

        void printCrap();

    protected:

    private:

};



#endif // SALLY_H

错误代码:

/tmp/ccfOEJJF.o:Main.cpp :(。text + 0x15):对Sally::Sally()' /tmp/ccfOEJJF.o:Main.cpp:(.text+0x15): relocation truncated to fit: R_X86_64_PC32 against undefined symbol未定义的引用Sally :: Sally()' /tmp/ccfOEJJF.o:Main.cpp:(.text+0x29):对Sally::printCrap()' /tmp/ccfOEJJF.o:Main.cpp:(.text+0x29): relocation truncated to fit: R_X86_64_PC32 against undefined symbol未定义的引用Sally :: printCrap()' /tmp/ccfOEJJF.o:Main.cpp:(.text+0x35):未定义引用Sally::printCrap()' /tmp/ccfOEJJF.o:Main.cpp:(.text+0x35): relocation truncated to fit: R_X86_64_PC32 against undefined symbol Sally :: printCrap()' collect2:错误:ld返回1退出状态

2 个答案:

答案 0 :(得分:2)

您输入cygwin的命令必须是

g++ Sally.cpp Main.cpp

您不在命令行中包含头文件。作为一条建议,查找如何使用 makefile

答案 1 :(得分:0)

testsuite/Makefile中我将prog的规则更改为:

prog.o: prog.c
    $(CC) -c -o $@ $<

prog.exe: prog.o
    $(CC) -o $@ $<

这让事情发生了变化 - 我不确定它是否正确 - 但它继续在protos.h中提出问题,因为已经有Elf_ [ESP] hdr类型的系统头定义......我不得不将它们更改为pelf_ [ESP] hdr以获取所有原型,定义和参考:

protos.h
chrpath.c
elf.c
killrpath.c