[英]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 --libs
和i686-w64-mingw32.static-pkg-config SDL_image --cflags --libs
在参数中,而不是显式链接(它们只是为SDL函数提供了未定义的参考,例如SDL_GL_CreateContext
和IMG_Load
并说Package SDL_image was not found in the pkg-config search path.
。
您应该使用pkg-config --cflags sdl2和pkg-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.