是什么原因导致错误"未定义的引用(部分功能)QUOT ;? [英] What causes the error "undefined reference to (some function)"?

查看:163
本文介绍了是什么原因导致错误"未定义的引用(部分功能)QUOT ;?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我得到的错误:

main.o(.text+0x1ed): In function `main':
: undefined reference to `avergecolumns'
collect2: ld returned 1 exit status

在我的gcc *的.o。我不太清楚是什么原因导致这个错误。其他海报解释其作为未找到该功能或功能是空的。如果有人能澄清或完善,这将是greaty AP preciated!

when I gcc *.o. I'm not quite sure what causes this error. Other posters have explained it as the function is not found or the function is empty. If someone could clarify or refine, it would be greaty appreciated!

下面是我的函数的code(我试图计算二维数组中列的平均值):

Here is my function's code(I'm trying to calculate the average of the column in 2D arrays):

#include "my.h"

void averagecolumns (int x, int y, int** a)
{
    int i;
    int j;
    float sum;
    float colAvg;

    sum = 0;
    colAvg = 0;

    printf("i.  The column averages are: \n");
    for(i = 0; i < x; i++)
        {
            for(j = 0; j < y; j++)
                {
                    sum += a[i][j];
                    colAvg = sum / (float)x;
                }
            printf("Column: %3d, Average: %6.2f", j, colAvg);
            sum = 0;   
            colAvg = 0;
        }

主要的relavent部分是:

The relavent parts of main are:

#include "my.h"

int main (int argc, char* argv[])
{
     int** a;
     float** colAvg;
     int ROWS;
     int COLS;
     int i;
     int j;
     int** table;
     FILE* fpmyfile;
     int closeResult;

....

             printme (ROWS, COLS, a);                              // call functions a - j
             oddvalues (ROWS, COLS, a);
             oddlocations (ROWS, COLS, a);
             countoddrows (ROWS, COLS, a);
             addrows (ROWS, COLS, a);
             findfirstsmall (ROWS, COLS, a);
             findlastlarge (ROWS,COLS, a);                          
             addcolumns (ROWS, COLS, a);
             avergecolumns (ROWS, COLS, a);

....

}

此外,这是一个连接器或编译错误(我不知道要添加哪些标签)。

Also, is this a linker or a compile error (I wasn't sure which tag to add).

推荐答案

这是一个链接错误。 LD 是连接器,所以如果你用LD返回退出状态1结尾的错误信息,告诉你,这是一个链接错误。

It's a linker error. ld is the linker, so if you get an error message ending with "ld returned 1 exit status", that tells you that it's a linker error.

该错误消息告诉你,没有你链接到的目标文件包含 avergecolumns 的定义。其原因是,你所定义的函数被调用 averagecolumns (换句话说:调用的函数(和presumably当你拼错函数名头文件,以及 - 否则你不得不在编译时))得到一个不同的错误

The error message tells you that none of the object files you're linking against contains a definition for avergecolumns. The reason for that is that the function you've defined is called averagecolumns (in other words: you misspelled the function name when calling the function (and presumably in the header file as well - otherwise you'd have gotten a different error at compile time)).

这篇关于是什么原因导致错误&QUOT;未定义的引用(部分功能)QUOT ;?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆