C ++链接错误。我究竟做错了什么?

时间:2012-11-19 13:59:51

标签: c++ function header

所以,这是我第一次将单个程序分成标题和两个.cpp文件。但我认为我收到了链接错误。下面是目录的样子。 (继承人我的形象链接我没有足够的代表在问题中张贴图片)

main.cpp是我的主要源文件,其中包含所有调用函数和其他重要内容。在functions.cpp中我有我的所有函数,在coordin.h文件中我有函数原型和结构以及常量。一切都很好没有错字我没有检查过一切。但我得到一个未定义的函数错误引用。 我也包含了coordin.h文件。 你认为functions.cpp文件需要去别的地方吗我的意思是编译器没有查看那个文件?

她的代码:

的main.cpp

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

using namespace std;

int main()
{
    rect rplace ;
    polar pplace;

    rect test = {45.89,25.4};
    pplace = rect_to_polar(test);

    cout<<pplace.angle<<endl;


    return 0;
}

coordin.h

#ifndef COORDIN_H_INCLUDED
#define COORDIN_H_INCLUDED 


/* Constants */

const double RAD_TO_DEG = 57.29577951;

struct polar{
    double distance; //distance from the origin
    double angle; //the angle from the origin
};

struct rect {
    double x; //horizontal distance form the origin
    double y; //vertical distance from the origin
};

/* Function prototypes */

polar rect_to_polar(rect xypos);
void show_polar(polar dapos);

#endif // COORDIN_H_INCLUDED

functions.cpp

/*
    functions.cpp
    contains all the function declarations
*/

#include <iostream>
#include "coordin.h" 
#include <cmath>

using namespace std;

//convert rectangular to polar coordinates
polar rect_to_polar(rect xypos){

    polar answer;

    answer.distance =
        sqrt(xypos.x * xypos.x + xypos.y * xypos.y);
    answer.angle = atan2(xypos.y, xypos.x);

    return answer;
}

//show polar coordinate, converting angle to degrees

void show_polar(polar dapos){

    cout<<"Distance : " << dapos.distance <<endl;
    cout<<"Angle    : " << dapos.angle * RAD_TO_DEG <<" degrees."<<endl;
}

继承错误:

1 个答案:

答案 0 :(得分:1)

Code :: Blocks是否实际编译了您的functions.cpp文件?右键单击项目树中的functions.cpp,选择“属性”并确保设置了“Build”,“Release”复选框 - 否则,Code :: Block将在构建期间忽略此文件并赢得'编译它。