首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MXE和SDL2的多个“未定义引用”错误

使用MXE和SDL2的多个“未定义引用”错误
EN

Stack Overflow用户
提问于 2016-02-29 09:51:04
回答 2查看 630关注 0票数 0

我正在尝试编译一个OpenGL程序,它使用SDL来创建上下文和加载图像。当我在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_GL_CreateContextIMG_Load这样的SDL函数提供了未定义的引用,并表示Package SDL_image was not found in the pkg-config search path.)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-03 15:58:16

我已经在/opt/mxe/中安装了MXE,下面的内容对我有用(我试图编译的文件是5_transformation.c):

代码语言:javascript
复制
/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`

确保所有可执行文件的路径正确(gccpkg-config),将--cflags参数放在--libs one之前,确保键入sdl2 (在小情况下为SDL)和SDL2_image (在caps中为SDL),使用-mwindows-lmingw32并使用-lopengl32代替-lgl

票数 0
EN

Stack Overflow用户

发布于 2016-03-03 13:44:01

您应该使用pkg-config -c频标志、sdl2、pkg-config - libs sdl2来获取所需的所有标记和库。(顺便说一句。不要包含SDL2 2/ SDL.h,而是只包含SDL.h,如果您想要更可移植,则使用pkg-config -c标志值来设置包含路径)

您也可以使用sdl2 2-config,而不是使用pkg-config。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35696413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档