文件中未定义的第一个引用符号
Undefined first referenced symbol in file
我收到此错误,但我不确定如何修复它。这是一个信息检索项目,我正在尝试使用这种类型计算 tf-idf (1+log(freq(t,n)))*log( N/k)。 freq(t,n)是一个词的频率,t在文件n和N是总文件数,k是包含单词t的文件数。
Undefined first referenced
symbol in file
log /var/tmp//ccx8E8Y1.o
ld: fatal: Symbol referencing errors. No output written to a.out
collect2: ld returned 1 exit status
这是我遇到错误的函数(开头有 #include <math.h>
):
void makeTF_IDF(char** words,double** weight,char** str){
int i,j,n,f;
char nameout[1024],line[1024];
double tf,idf[1443],t;
FILE *fin;
for(i=0;i<1443;i++){
n=0;
for(j=0;j<26;j++){
strcpy(nameout,strtok(str[j],"."));
strcat(nameout,"out.txt");
fin=fopen(nameout,"r");
while(1){
if(fgets(line,1024,fin)==NULL) break;
if(strstr(line,words[i])!=NULL){
n++;
break;
}
}
fclose(fin);
}
t=26/n;
idf[i]=log(t);
}
for(i=0;i<1443;i++){
for(j=0;j<26;j++){
f=0;
strcpy(nameout,strtok(str[j],"."));
strcat(nameout,"out.txt");
fin=fopen(nameout,"r");
while(1){
if(fgets(line,1024,fin)==NULL) break;
if(strstr(line,words[i])!=NULL) f++;
}
weight[j][i]=(log(1+f))*idf[i];
fclose(fin);
}
}
}
我想你是在 unix 环境下工作(如果你只是想从这个文件中创建一个可执行文件,你确实有一个 main 函数)。
您应该使用这样的命令进行编译,以便在链接时搜索数学库:
gcc <your_filename.c> -lm
执行此命令后,您的当前工作目录中应该有一个名为 a.out 的可执行文件
我收到此错误,但我不确定如何修复它。这是一个信息检索项目,我正在尝试使用这种类型计算 tf-idf (1+log(freq(t,n)))*log( N/k)。 freq(t,n)是一个词的频率,t在文件n和N是总文件数,k是包含单词t的文件数。
Undefined first referenced
symbol in file
log /var/tmp//ccx8E8Y1.o
ld: fatal: Symbol referencing errors. No output written to a.out
collect2: ld returned 1 exit status
这是我遇到错误的函数(开头有 #include <math.h>
):
void makeTF_IDF(char** words,double** weight,char** str){
int i,j,n,f;
char nameout[1024],line[1024];
double tf,idf[1443],t;
FILE *fin;
for(i=0;i<1443;i++){
n=0;
for(j=0;j<26;j++){
strcpy(nameout,strtok(str[j],"."));
strcat(nameout,"out.txt");
fin=fopen(nameout,"r");
while(1){
if(fgets(line,1024,fin)==NULL) break;
if(strstr(line,words[i])!=NULL){
n++;
break;
}
}
fclose(fin);
}
t=26/n;
idf[i]=log(t);
}
for(i=0;i<1443;i++){
for(j=0;j<26;j++){
f=0;
strcpy(nameout,strtok(str[j],"."));
strcat(nameout,"out.txt");
fin=fopen(nameout,"r");
while(1){
if(fgets(line,1024,fin)==NULL) break;
if(strstr(line,words[i])!=NULL) f++;
}
weight[j][i]=(log(1+f))*idf[i];
fclose(fin);
}
}
}
我想你是在 unix 环境下工作(如果你只是想从这个文件中创建一个可执行文件,你确实有一个 main 函数)。
您应该使用这样的命令进行编译,以便在链接时搜索数学库:
gcc <your_filename.c> -lm
执行此命令后,您的当前工作目录中应该有一个名为 a.out 的可执行文件