我正在尝试在 Go 程序中使用 OpenGL。我想我已经准备好了所有的部分,但我仍然不能让它运行起来。
我的 C 编译器是64 位版本的 mingw。它在我的%PATH%
变量中,并且我已经验证它与cgo
文档中的随机数示例一起使用。
\mingw\x86_64-w64-mingw32
我通过将 bin、lib 和 include 文件夹复制到我的 mingw-w64 安装中的等效文件夹来安装 64 位 GLEW 1.9.0 。
当我尝试运行go get github.com/go-gl/gl
时,请回复以下内容:
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 得到的结果。