gpt4 book ai didi

c - MXE 和 SDL2 出现多个 "Undefined reference"错误

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

我正在尝试编译一个 OpenGL 程序,该程序使用 SDL 进行上下文创建和图像加载。当我在Linux上原生编译它时,它编译并运行没有错误。我已在/opt/mxe 中安装了 MXE,并检查了 SDL2 目录(包含 header )位于 /opt/mxe/usr/i686-w64-mingw32.static/include/ 中而相应的库( libSDL.a 等)位于 /opt/mxe/usr/i686-w64-mingw32.static/lib/ 中。

包含的头文件是<SDL2/SDL.h><SDL2/SDL_image.h>

我正在尝试使用编译上述程序

i686-w64-mingw32.static-gcc 5_transformation.c -I/opt/mxe/usr/i686-w64-mingw32.static/include -L/opt/mxe/usr/i686-w64-mingw32.static/lib -lmingw32 -lSDL2main -lSDL2 -lSDL2_image -lGLEW -lopengl32 -lm -mwindows

但是,它给出了多个 undefined reference 错误:[ http://pastebin.com/JaadTNnv

] 1

其中许多错误似乎与 Direct3D 等相关,我没有使用这些错误(但 SDL2 可能在内部)。我也必须链接到他们吗?我这样做对吗? (MXE页面似乎没有任何详细说明)。

PS。这个问题或其变体似乎在互联网上很受欢迎。不过,我已经听从了他们的指示。我的主要功能定义为 int main(int argc, char *argv[]) ,我链接到 -lmingw32、-lSDL2main 和 -mwindows,我已经确保 GCC 参数中的路径是正确的,我尝试输入 i686-w64-mingw32.static-sdl-config --cflags --libsi686-w64-mingw32.static-pkg-config SDL_image --cflags --libs在参数中而不是显式链接(这只是为 SDL_GL_CreateContextIMG_Load 等 SDL 函数提供了 undefined reference ,并表示 Package SDL_image was not found in the pkg-config search path. )。

最佳答案

您应该使用pkg-config --cflags sdl2pkg-config --libs sdl2来获取您需要的所有cflags和库。 (顺便说一句,不要包含 SDL2/SDL.h,而仅包含 SDL.h 并使用 pkg-config --cflags 值来设置如果您想更便携,请增加包含路径)

除了使用pkg-config之外,您还可以使用sdl2-config

如果这对您的设置也没有帮助 - 那么请查看随 mxe 提供的 sdl2 示例。将您的代码添加到其中,并尝试通过在 mxe checkout 中运行 make sdl2 在 mxe 中(重新)编译 sdl2。 (https://github.com/mxe/mxe/commit/c3624cdefb7ff0c4b69316c7c1b740b97f55e1db)

关于c - MXE 和 SDL2 出现多个 "Undefined reference"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35696413/

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