gpt4 book ai didi

c - 对 header 中包含的函数的 undefined reference

转载 作者:行者123 更新时间:2023-11-30 15:06:25 24 4
gpt4 key购买 nike

如果您对我遇到的几个链接器和编译器问题有任何见解,我将不胜感激

我有main.c文件

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "assemble.h"

char *fileName;
FILE *file;

int main(int argc, char *argv[]){

char inputFile[MAX_INPUT];
int i, flag = TRUE;

for(i=1; i<argc; i++){
fileName = argv[i];
strcpy(inputFile,argv[i]);
file = fopen(inputFile,"r");
}
flag = assemble(file, fileName); //****this is the problam line****
if(!flag)
printf("Errors found, compilation aborted\n");
else
printf("File %s compiled\n", fileName);
fclose(file);

return 0;
}

在 header assemble.h 中,我有以下声明:

int assemble(FILE *file, char *fileName);

第一个问题是在 main.c 中,我得到了对“assemble”的 undefined reference ,id 返回了 1 退出状态

第二个问题是在 assemble.h 中,我得到 FILE was not returned in this scope。

有谁知道导致这些错误的原因以及解决方法是什么?提前致谢

[编辑]:makefile。

assembler: main.o assemble.o functions.o 
gcc -Wall -ansi -pedantic main.o assemble.o functions.o -o assembler -lm

main.o: main.c assemble.c
gcc -Wall -ansi -pedantic -c main.c assemble.c -lm

assemble.o: assemble.c
gcc -Wall -ansi -pedantic -c assemble.c -lm

functions.o: functions.c
gcc -Wall -ansi -pedantic -c functions.c -lm

clean:
rm -f assembler
rm -f *.o

最佳答案

您需要编译这两个文件并将它们链接在一起。

gcc main.c assemble.c

或者将它们单独编译为目标文件并链接它们。

gcc -c main.c
gcc -c assemble.c
gcc main.o assemble.o

关于c - 对 header 中包含的函数的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39023639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com