未定义的函数引用,ld返回1退出状态错误。没有语法错误。
问题描述:
我知道这个问题已经被问过很多次了,我已经尝试了所有已发布的解决方案,但对于我来说,它似乎不起作用。我不知道这是编译器问题还是我做错了。未定义的函数引用,ld返回1退出状态错误。没有语法错误。
我从我创建的'bin.txt'文件中提取数据。它包含0和1的3x3矩阵(仅在两位数之间没有任何空格)。我想统计出有多少个零和那个,并且据此,我想创建一个新的文本文件(在我的代码'encode.txt'中)并将这些计数的数字写入该文件。
我在CodeBlocks上使用GNU GCC编译器。这是我的代码,如果你发现错别字,那我真的很抱歉。我不打算浪费你的时间。任何帮助和提示,这是值得赞赏的。
#include <stdio.h>
#include <stdlib.h>
#define row 3
#define col 3
int foo(int x, int y);
int main()
{
FILE *ptr;
FILE *encode;
int i,j,zero=0,one=0;
int a[row][col];
ptr=fopen("bin.txt","r");
encode = fopen("encode.txt","w");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
fscanf(ptr,"%1d",&a[i][j]);
if(a[i][j]==0)
{
zero++;
}
else
{
one++;
}
}
foo(zero, one);
zero=0;
one=0;
}
/*----------------Print scaned file----------------------------------*/
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%1d",a[i][j]);
}
printf("\n");
}
/*----------- Foo function ----------*/
int foo(int x, int y)
{
fprintf(encode,"%d %d",x,y);
fprintf(encode,"\n");
}
/*----------- Closing file ----------*/
fclose(ptr);
fclose(encode);
return 0;
}
生成日志:
mingw32-g++.exe -o bin\Debug\file_compress.exe obj\Debug\main.o
obj\Debug\main.o: In function `main':
E:/Code/C/File compression/file_compress/main.c:31: undefined reference to
`foo'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
2 error(s), 0 warning(s) (0 minute(s), 0 second(s))
您不能在另一个函数内定义一个函数。将“foo”的定义移到'main' – Arkia
之外啊,我不好意思,我没注意到。谢谢你的帮助 – Rajan
C不是C++不是C!如果这是C代码,请使用C编译器,即gcc前端,而不是C++前端g ++!否则,更改标签。并阅读gcc手册页。 – Olaf