我正在尝试在Go程序中使用OpenGL。我认为所有必要的部分都已经就位,但我仍然无法将其运行起来。
我的C编译器是mingw的64位版本。它已经加入了%PATH%
环境变量,并且我已经通过文档中的随机数例子验证了它的工作状态。
我通过将bin、lib和include文件夹复制到mingw-w64安装中的\mingw\x86_64-w64-mingw32
等效路径下,安装了64位GLEW 1.9.0。
当我尝试运行go get github.com/go-gl/gl
时,Go给出以下回复:
In file included from attriblocation.go:7:0:
gl.h:5:25: error: enumerator value for '__cgo_enum__5' is not an integer constant
#define GLEW_GET_FUN(x) (*x)
^
d:\programs\mingw64\x86_64-w64-mingw32\include\gl\glew.h:1956:26: note: in expansion of macro 'GLEW_GET_FUN'
#define glVertexAttrib3f GLEW_GET_FUN(__glewVertexAttrib3f)
^
gl.h:5:25: error: enumerator value for '__cgo_enum__6' is not an integer constant
#define GLEW_GET_FUN(x) (*x)
这些错误在值达到__cgo_enum__15
之前以类似的方式继续出现。对于每个条目,我还会从Go方面得到一些匹配错误。
有任何想法可以让这个工作起来吗?
编辑:以下是来自Go方面的“匹配”日志。
attriblocation.go:42:2: error: initializer element is not constant
func (indx AttribLocation) Attrib4fv(values *[4]float32) {
^
attriblocation.go:42:2: error: (near initialization for '__cgodebug_data[5]')
attriblocation.go:43:2: error: initializer element is not constant
C.glVertexAttrib4fv(C.GLuint(indx), (*C.GLfloat)(&values[0]))
^
attriblocation.go:43:2: error: (near initialization for '__cgodebug_data[6]')
attriblocation.go:44:2: error: initializer element is not constant
}
每个__cgodebug_data[]
5-15都有一个。
编辑2:我被要求附上一些日志。这是使用GCC 4.8编译时发生的情况,以及这是我在4.7和4.6中得到的情况。