我正在使用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及其包含文件中复制了SOIL,但它不起作用。

最佳答案

链接顺序对于g ++很重要。
试试这个命令:


  链接{“ SOIL”,“ glfw3”,“ opengl32”,“ gdi32”,“ glu32”}


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

10-06 15:38