2013-05-07 34 views
11

Tôi đang cố gắng sử dụng OpenGL từ bên trong chương trình Go. Tôi nghĩ rằng Tôi có tất cả các phần tại chỗ, nhưng tôi vẫn không thể làm cho nó chạy.Sử dụng OpenGL từ Go

Trình biên dịch C của tôi là 64-bit version of mingw. Nó nằm trong biến số %PATH% của tôi và tôi đã xác minh nó hoạt động với ví dụ số ngẫu nhiên trong tài liệu cgo.

Tôi đã cài đặt GLEW 64 bit 64 bit bằng cách đối phó với thùng, lib và bao gồm các thư mục tương ứng với \mingw\x86_64-w64-mingw32 trong cài đặt mingw-w64 của tôi.

Khi tôi cố gắng và chạy go get github.com/go-gl/gl, hãy trả lời như sau:

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) 

Những lỗi này tiếp tục trong một thời trang tương tự cho các giá trị lên đến __cgo_enum__15. Tôi cũng nhận được một số lỗi phù hợp đến từ phía bên của mọi thứ cho mỗi mục.

Bất kỳ ý tưởng nào về những gì tôi thiếu để làm việc này hoạt động?

Chỉnh sửa: Đây là nhật ký 'phù hợp' từ phía bên của mọi thứ.

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 
} 

Có một cho mỗi __cgodebug_data[] 5-15.

Chỉnh sửa 2: Tôi đã được yêu cầu đính kèm một số nhật ký. Here is what happens when I compile with GCC 4.8Here is what I get with 4.7 and 4.6.

+0

Bạn có ý nghĩa gì với các lỗi trùng khớp? Bạn có thể đăng chúng không? – nemo

+0

Tôi đã thêm các lỗi dường như đến từ phía bên của ngôi nhà. –

+0

Thử chạy 'go build -a -x' trong' $ GOROOT/src/pkg/github.com/go-gl/gl' và dán các dòng không thành công ngoài các thông báo lỗi bạn đã đăng. Đây có thể giúp đỡ. – nemo

Trả lời

3

Dường như đó là lỗi trong Go và cách trình biên dịch C/Go giao tiếp với nhau. Giải pháp thay thế là đặt CGO_CFLAGS=-ftrack-macro-expansion=0 go build. Bạn cũng có thể sử dụng go-1.2rc5 hoặc mới hơn để khắc phục sự cố. This bug has been closed with the previous workarounds/fixes specified.

+1

Điều này thực sự là một khiếm khuyết trong đi chứ không phải là go-gl. Không có gì go-gl có thể làm để khắc phục vấn đề vì nó là một vấn đề của trình biên dịch nói chuyện với nhau. – pwaller

+0

Bạn nói đúng! Trả lời chỉnh sửa cho rõ ràng. –

Các vấn đề liên quan