gpt4 book ai didi

c - 未定义引用?但我已经实现了这个功能

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

display.h

#ifndef PRO_DISPLAY_H
#define PRO_DISPLAY_H

/** Initializes the display **/
int pro_display_init(void);

#endif /* PRO_DISPLAY_H */

显示.c

#include "main.h"

static int height_ = 300;
static int width_ = 300;
static int bpp_ = 16;

static SDL_Surface* screen_ = NULL;

int pro_display_init(void)
{
screen_ = SDL_SetVideoMode(width_, height_, bpp_, SDL_HWSURFACE|SDL_DOUBLEBUF);
if (!screen_)
{
pro_sdl_error("Video initialization failed.");
return 0;
}

return 1;
}

ma​​in.h

#ifndef PRO_MAIN_H
#define PRO_MAIN_H

// standard headers
#include <stdlib.h>
#include <stdlib.h>

// conditional headers
#if defined(WIN32) || defined(_WIN32)
#include <windows.h>
#endif

// our own headers
#include "scripter.h"
#include "ttf_util.h"
#include "events.h"
#include "display.h"

// some macros
#define pro_error(...) fprintf(stderr, __VA_ARGS__)
#define pro_sdl_error(x) fprintf(stderr, "%s. \n=> %s\n", x, SDL_GetError())
#define pro_ttf_error(x) fprintf(stderr, "%s. \n=> %s\n", x, TTF_GetError())

#endif /* PRO_MAIN_H */

** main.c**

#include "main.h"

int main(int argc, char* argv[])
{
pro_display_init();
return 0;
}

错误:

main.c|5|undefined reference to `pro_display_init()'|

检查了构建过程。确保我将“display.c”添加到 gcc 的输入文件中。我已经无计可施了。为什么会出错?

最佳答案

display.c 和 main.c 被编译成它们自己的“翻译单元”。发生的情况是,当尝试解析符号名称(即寻找 pro_display_init)时,C 编译器认为它正在编译一个独立的 .c 单元。正确的方法是单独编译它们,然后链接它们,例如

gcc -c display.c # creates display.o
gcc main.c display.o # compiles main.o and then link with display.o

当然,您很快就会创建/重用一个 Makefile,它可以让您定义所有这些规则。

关于c - 未定义引用?但我已经实现了这个功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11632602/

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