OpenGL SOIL对glBindTexture,glTexImage2d等的未定义引用

时间:2013-08-14 17:47:49

标签: c++ opengl reference undefined soil

我正在使用C ++和Opengl,我正在尝试使用SOIL,但是当我编译时,我得到了对glBindTexture,glTexImage2D等的未定义引用。但是,这只是来自SOIL.c,而不是我自己的源代码。这就是错误产生的结果:

http://pastebin.com/sKrQaBhz

我的显卡是NVIDIA GeForce GTX 680,我的驱动程序已全面更新。我已将所有内容链接起来,并且我正在使用预制来管理我的项目。我正在开发一台Linux机器,但是,我正在尝试将它交叉编译到我的Windows机器上,这会产生这个错误。如果我在linux上编译它,那就完全没问题了。这是我的premake4.lua文件:

http://pastebin.com/T4hsbdz0

我的包含文件是:

#include "opengl/gl_core_3_3.hpp"
#include <GLFW/glfw3.h>
#include <SOIL/SOIL.h>
#include <glm/glm.hpp>
#include <glm/gtx/transform.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include "loadshader.hpp"

我正在使用mingw32来编译我的代码。在我使用SOIL之前,一切都很好。我从他们的网页lonesock.net下载了SOIL,然后我复制了libSOIL.a及其包含文件,但它只是不起作用。

2 个答案:

答案 0 :(得分:1)

链接g ++的订单事宜。 试试这个订单:

  

links {“SOIL”,“glfw3”,“opengl32”,“gdi32”,“glu32”}

(编辑:根据Premake论坛中的重复问题修复OP答案:http://industriousone.com/topic/how-use-premake-compile-static-library

答案 1 :(得分:0)

查看SOIL主页,他们说必须静态链接。因此,不要使用动态链接(在gcc编译器中使用'-l'),而是尝试指定库的完整路径。

这篇文章说明了我想说的话:https://stackoverflow.com/a/4156190/2293156

  

gcc -lsome_dynamic_lib some_static_lib.a code.c