《OpenGL編程指南第七版》學習——編譯時提示“error C2381: “exit” : 重定義;__declspec(noreturn) 不同”錯誤的解決辦法


解決辦法
一、

#if defined(_WIN32)

# ifndef GLUT_BUILDING_LIB
extern _CRTIMP void __cdecl exit(int);


上面是glut.h中對exit的使用,意思是如果沒有定義宏‍GLUT_BUILDING_LIB,就使用它的exit,那我們就在項目的屬性——預處理器 里定義這個宏,這樣就不執行glut.h中的exit了,而只執行stdlib.h中的exit。這樣也就不會沖突了。對了,還要在附加依賴項里手動加上‍glut32.lib glu32.lib opengl32.lib,因為我們定義了‍宏‍GLUT_BUILDING_LIB,glut.h文件就不會為我們自動生成這三個附加依賴項了。

 

 

二、


stdlib.h(406)   :   error   C2381:   “exit”:   重定義;__declspec(noreturn)   不同   
  glut.h(146)   :   參見“exit”的聲明  

解決方法:#include <GL/glut.h>
                    #include <stdlib.h>
改成:
                    #include <stdlib.h>
                    #include <GL/glut.h>
通過。

OpenGL和C++有不太融合的地方,在include時要讓標准C++類庫的頭文件位於GLUT圖形庫頭文件之前。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM