gpt4 book ai didi

c - 用一个头文件链接多个c文件

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

我刚开始将 c 文件链接在一起,想知道是否有人可以帮助我将 2 个 c 文件与头文件链接起来。在我的 make 文件中,我有:

all: runMe

runMe: a2.o functions.o

gcc a2.o functions.o -o runMe

a2.o: a2.c structs.h
gcc -Wall -pedantic -std=c99 -c a2.c

functions.o: functions.c structs.h
gcc -Wall -pedantic -std=c99 -c functions.c

其中 structs.h 包含我使用的结构以及 function.c 中使用的函数原型(prototype)。我是否将 #include "structs.h"放入两个 c 文件中,还是只放入其中之一?如果它不在两者中,我会得到未声明的标识、未知类型等。如果我将它包含在两者中,我会得到如下错误:

Undefined symbols for architecture x86_64:
"_acs_map", referenced from:
_main in a2.o
_forward in functions.o
_backwards in functions.o
"_endwin", referenced from:
_main in a2.o
"_init_pair", referenced from:
_forward in functions.o
_backwards in functions.o
"_initscr", referenced from:
_main in a2.o
"_printw", referenced from:
_main in a2.o
"_start_color", referenced from:
_main in a2.o
"_stdscr", referenced from:
_main in a2.o
_forward in functions.o
_backwards in functions.o
_restartScreen in functions.o
_cleanScreen in functions.o
"_waddch", referenced from:
_main in a2.o
_forward in functions.o
_backwards in functions.o
"_wattr_off", referenced from:
_forward in functions.o
_backwards in functions.o
"_wattr_on", referenced from:
_forward in functions.o
_backwards in functions.o
"_wclear", referenced from:
_restartScreen in functions.o
_cleanScreen in functions.o
"_wgetch", referenced from:
_main in a2.o
"_wgetnstr", referenced from:
_main in a2.o
"_wmove", referenced from:
_main in a2.o
_forward in functions.o
_backwards in functions.o
"_wrefresh", referenced from:
_main in a2.o

最佳答案

您的 header 很好,您可以将其包含在两个 C 文件中。

错误来自链接器。它无法找到您在代码中使用的 ncurses 库函数(initscr、startcolor 等)。

您需要首先查找系统中是否安装了 ncurses 库,如果安装了,请指定 libncurses 库的可用路径,如下所示。

runMe: a2.o functions.o
gcc -LPATH_TO_NCURSES_LIB a2.o functions.o -lncurses -o runMe

您使用什么操作系统? Windows、Linux、BSD?

关于c - 用一个头文件链接多个c文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28617641/

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