2008-08-18 30 views
28

Trong chương trình OpenGL đơn giản của tôi, tôi nhận được lỗi sau đây về lối định nghĩa lại:GLUT lối định nghĩa lại lỗi

1>c:\program files\microsoft visual studio 8\vc\include\stdlib.h(406) : error C2381: 'exit' : redefinition; __declspec(noreturn) differs 
1>  c:\program files\microsoft visual studio 8\vc\platformsdk\include\gl\glut.h(146) : see declaration of 'exit' 

Tôi đang sử dụng Nate Robins' GLUT for Win32 và nhận được lỗi này với Visual Studio 2005 hoặc Visual C++ 2005 (Express Phiên bản). Nguyên nhân của lỗi này là gì và làm cách nào để khắc phục lỗi này?

Trả lời

68

Nguyên nhân:

Các stdlib.h mà tàu với các phiên bản gần đây của Visual Studio có một định nghĩa khác nhau (và mâu thuẫn) của exit() chức năng. Nó xung đột với định nghĩa trong glut.h.

Giải pháp:

Override định nghĩa trong glut.h với điều đó trong stdlib.h. Đặt dòng stdlib.h phía trên dòng glut.h trong mã của bạn.

#include <stdlib.h> 
#include <GL/glut.h> 
15

hay này ... Để khắc phục lỗi này, bấm chuột phải vào tên dự án trong tab Solution Explorer và chọn Properties -> C/C++ -> Preprocessor -> định nghĩa Preprocessor và thêm GLUT_BUILDING_LIB đến hiện định nghĩa, phân tách bằng dấu chấm phẩy.

+0

Cảm ơn! bao gồm stdlib.h trên glut.h của bạn đã không làm việc cho tôi. Giải pháp này đã làm! – SunnyD

+0

Sau khi thực hiện việc này, tôi gặp lỗi liên kết? – Gerard

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