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

前端之家收集整理的这篇文章主要介绍了什么原因导致错误“未定义引用(某些功能)”?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个问题在这里已经有一个答案:> What is an undefined reference/unresolved external symbol error and how do I fix it?27
我得到错误
  1. main.o(.text+0x1ed): In function `main':
  2. : undefined reference to `avergecolumns'
  3. collect2: ld returned 1 exit status

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

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

  1. #include "my.h"
  2.  
  3. void averagecolumns (int x,int y,int** a)
  4. {
  5. int i;
  6. int j;
  7. float sum;
  8. float colAvg;
  9.  
  10. sum = 0;
  11. colAvg = 0;
  12.  
  13. printf("i. The column averages are: \n");
  14. for(i = 0; i < x; i++)
  15. {
  16. for(j = 0; j < y; j++)
  17. {
  18. sum += a[i][j];
  19. colAvg = sum / (float)x;
  20. }
  21. printf("Column: %3d,Average: %6.2f",j,colAvg);
  22. sum = 0;
  23. colAvg = 0;
  24. }

主要的主要部分有:

  1. #include "my.h"
  2.  
  3. int main (int argc,char* argv[])
  4. {
  5. int** a;
  6. float** colAvg;
  7. int ROWS;
  8. int COLS;
  9. int i;
  10. int j;
  11. int** table;
  12. FILE* fpmyfile;
  13. int closeResult;
  14.  
  15. ....
  16.  
  17. printme (ROWS,COLS,a); // call functions a - j
  18. oddvalues (ROWS,a);
  19. oddlocations (ROWS,a);
  20. countoddrows (ROWS,a);
  21. addrows (ROWS,a);
  22. findfirstsmall (ROWS,a);
  23. findlastlarge (ROWS,a);
  24. addcolumns (ROWS,a);
  25. avergecolumns (ROWS,a);
  26.  
  27. ....
  28.  
  29. }

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

解决方法

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

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

猜你在找的C&C++相关文章