C程序中未定义的引用错误

时间:2014-03-09 08:41:11

标签: c file function undefined-reference

我写了一个C程序pgm.c。它包含一个函数readfile.so。我还写了一个头文件do.h。然后我将这个readfile函数写在一个单独的程序ini.c中,并将do.h包含在此程序中。当我编译pgm.c时,我收到错误"pgm.c:(.text+0x2e): undefined reference to readfile"

我的代码是:

do.h
    extern int readfile( FILE *in );

pgm.c
    #include<stdio.h>
    #include"do.h"
    int main(int argc,char **argv)
    {
     FILE *in;
     in=fopen(argv[1],"r");
     readfile(in);
    }

ini.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <limits.h>
    #include <math.h>
    #include <float.h> 
    #include"do.h"
    int c;
    int readfile( FILE *in )
    {
    while( c == '#' || c == '\n' )  
    {
      if( c == '#' ) 
       {
        while( ( c = getc(in) ) != '\n' );
       }
      if( c == '\n' ) 
       c = getc( in ); 
     }
      if( c == EOF )
      break;
      else
      {
      printf("hai");
      }
    }
    return 1;
    }

我的程序有错误吗? 按gcc pgm.c

进行编译

2 个答案:

答案 0 :(得分:4)

C区分大小写;

extern int readfile( FILE *in );

未声明与;

相同的功能
int readFile( FILE *in )

选择一个外壳并在任何地方使用它来获得相同的功能。

答案 1 :(得分:0)

您还需要检查fopen的返回值。

如果它返回NULL,那么您的函数readfile(取决于大小写)将崩溃