什么原因导致错误“未定义引用(某些功能)”?

这个问题在这里已经有一个答案:> What is an undefined reference/unresolved external symbol error and how do I fix it?27
我得到错误
main.o(.text+0x1ed): In function `main':
: undefined reference to `avergecolumns'
collect2: ld returned 1 exit status

当我gcc * .o.我不太确定是什么原因导致这个错误.其他海报已解释为功能未找到或功能为空.如果有人可以澄清或改进,那将是非常感谢!

这是我的函数代码(我正在计算2D数组中的列的平均值):

#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;
        }

主要的主要部分有:

#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,a);
             oddlocations (ROWS,a);
             countoddrows (ROWS,a);
             addrows (ROWS,a);
             findfirstsmall (ROWS,a);
             findlastlarge (ROWS,a);                          
             addcolumns (ROWS,a);
             avergecolumns (ROWS,a);

....

}

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

解决方法

这是一个链接错误. ld是链接器,所以如果你收到一个以“ld”返回1退出状态“结尾的错误消息,那就告诉你这是一个链接错误.

错误消息告诉您,您链接的任何对象文件都不包含avergecolumns的定义.原因是您定义的函数称为平均列(换句话说:您在调用函数时拼写了函数名称(并且大概在头文件中),否则您将在编译时遇到不同的错误时间)).

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...