繁体   English   中英

MXE和SDL2出现多个“未定义参考”错误

[英]Multiple “Undefined reference” errors with MXE and SDL2

我正在尝试编译一个使用SDL进行上下文创建和图像加载的OpenGL程序。 当我在Linux上进行本机编译时,它会编译并运行而没有错误。 我已经在/ opt / mxe中安装了MXE,并检查了SDL2目录(包含标头)是否在/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

但是,它提供了多个未定义的参考错误:[ 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函数提供了未定义的参考,例如SDL_GL_CreateContextIMG_Load并说Package SDL_image was not found in the pkg-config search path.

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

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

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

我已经在/opt/mxe/安装了MXE,以下代码对我/opt/mxe/ (我尝试编译的文件是5_transformation.c ):

/opt/mxe/usr/bin/i686-w64-mingw32.static-gcc 5_transformation.c -mwindows `/opt/mxe/usr/bin/i686-w64-mingw32.static-pkg-config --cflags sdl2` `/opt/mxe/usr/bin/i686-w64-mingw32.static-pkg-config --cflags SDL2_image` -lmingw32 -lGLEW -lopengl32 -lm `/opt/mxe/usr/bin/i686-w64-mingw32.static-pkg-config --libs sdl2` `/opt/mxe/usr/bin/i686-w64-mingw32.static-pkg-config --libs SDL2_image`

一定要得到的路径,所有可执行文件正确( gcc以及pkg-config ),把--cflags之前的说法--libs一个,确保您类型sdl2 (小的情况下,SDL)和SDL2_image (SDL在帽),请使用-mwindows-lmingw32并使用-lopengl32而不是-lgl

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM