交叉编译Windows的OpenGL应用程序时出现大量链接错误

时间:2011-03-26 02:11:26

标签: opengl linker mingw cross-compiling

好的,情况就是这样:

我有一个使用SDL和OpenGL的应用程序。我一直在Linux(Ubuntu 10.10)中开发它,并且在该平台上它可以毫不费力地编译,构建和运行。我希望能够在Windows上测试我的应用程序,为此我一直试图用MinGW工具链交叉编译它。现在,应用程序编译时没有任何警告,但对于我的生活,我无法正确链接OpenGL库。具体来说,我会多次出现以下错误:

  

_glUseProgram@4'
undefined reference to
_ glDetachShader @ 8'的未定义引用   对_glDeleteProgram@4'
undefined reference to
_ glDeleteShader @ 4'的未定义引用   未明确引用_glCreateProgram@0'
undefined reference to
_ glCreateShader @ 4'   对_glShaderSource@16'
undefined reference to
_ glCompileShader @ 4'的未定义引用   未定义引用_glGetShaderiv@12'
undefined reference to
_ glGetShaderInfoLog @ 16'   未定义引用``_glAttachShader @ 8'
  ......等等

为完整起见,用于链接应用程序的命令:

  

i586-mingw32msvc-g ++ -Wall -g -DGL_GLEXT_PROTOYPES -o <output file&gt; <object files&GT; -Llib / lib -lmingw32 -lSDLmain -lSDL -mwindows -lglu32 -lopengl32 -I./include -I / usr / include -I./lib

谷歌搜索让我明白glu32和opengl32库只支持OpenGL的早期版本(如1.1或1.4),我的应用程序使用OpenGL 3.0+功能,所以这就是我目前关于问题来源的理论从。话虽如此,我真的不知道如何解决它。

应该指出的是,我对软件开发很陌生,所以我对这些工作原理的理解在这一点上相当浅薄。

1 个答案:

答案 0 :(得分:0)

您遇到的问题是版本和可用功能,是的。理论上,你可以自己处理所有的东西,但我非常建议你使用GLEW来处理扩展和附加功能(可以大大简化一些事情)。开始使用GLEW的基础是here,一旦设置完毕,使用其他OpenGL功能非常简单。 GLEW还提供一些检查以查看可用内容或验证特定功能。