C ++编译器使用GLUT抛出错误

时间:2017-06-13 15:40:25

标签: c++ opengl freeglut

代码工作正常但在我添加Sub Filter() Dim vCrit As Variant Dim wsO As Worksheet Dim wsL As Worksheet Dim rngCrit As Range Dim rngOrders As Range Set wsO = Worksheets("Historical Holdings") Set wsL = Worksheets("Control") Set rngOrders = wsO.Range("$A$1").CurrentRegion Set rngCrit = wsL.Range("Filter_Range") vCrit = rngCrit.Value rngOrders.AutoFilter _ Field:=1, _ Criteria1:=Application.Transpose(vCrit), _ Operator:=xlFilterValues End Sub 之后,它在void projection(float)函数中给出了unqaulified-id错误。我正在使用CodeBlocks IDE,MinGW。请帮帮我。

这是我得到的错误:

projection

此外,如果我评论||=== Build: Debug in L3 (compiler: GNU GCC Compiler) ===| C:\Users\sos\Documents\Code Blocks c++\L3\src\CallbackFunctions.cpp||In function 'void projection(float)':| C:\Users\sos\Documents\Code Blocks c++\L3\src\CallbackFunctions.cpp|56|error: expected unqualified-id before '=' token| C:\Users\sos\Documents\Code Blocks c++\L3\src\CallbackFunctions.cpp|57|error: expected primary-expression before ',' token| C:\Users\sos\Documents\Code Blocks c++\L3\src\CallbackFunctions.cpp| 57|error: expected primary-expression before ')' token| C:\Users\sos\Documents\Code Blocks c++\L3\src\CallbackFunctions.cpp||In function 'void specialKeyboard(int, int, int)':| ||=== Build failed: 3 error(s), 15 warning(s) (0 minute(s), 0 second(s)) ===| 内的所有内容,我会收到此错误:

projection

CallbackFunctions.h

 obj\Debug\src\Display.o||In function `glutInit_ATEXIT_HACK':| 
 C:\Program Files\CodeBlocks\MinGW\include\GL\freeglut_std.h|623|multiple  definition of `keyboardKey'|  
C:\Program Files\CodeBlocks\MinGW\include\GL\freeglut_std.h|623|multiple definition of `mouseX'| 
 C:\Program Files\CodeBlocks\MinGW\include\GL\freeglut_std.h|623|multiple definition of `mouseY'|  
C:\Program Files\CodeBlocks\MinGW\include\GL\freeglut_std.h|623|multiple definition of `toggleProjection'|

CallbackFunctions.cpp

#ifndef CALLBACKFUNCTIONS_H
#define CALLBACKFUNCTIONS_H

#include "GL/freeglut.h"


unsigned char keyboardKey;
char *specialKeyboardKey ="";
char *modifier="";

char *mouseButtonPressed="";
char *mouseState="";
int mouseX, mouseY;

int toggleProjection=0;

char *view="";




/* Hardware Interrupts callback functions */
void display();                                     //called every single frame
void reshape(int width, int height);                //called whenever the dimensions of the window are changed
void idle();                                        //when there is no interaction with the window
void keyboard(unsigned char key, int x, int y);     //whenever a keyboard key is pressed/interrupt occurs
void specialKeyboard(int button, int x, int y);     //captures special keys like: SHIFT ALT CTRL F1.....
void mouse(int button, int state, int x, int y);    //captures the mouse clicks and their state
void mouseMotion(int x, int y);                     //captures the motion of the mouse pointer in the window


void projection(float asp);

#endif // CALLBACKFUNCTIONS_H

1 个答案:

答案 0 :(得分:2)

这真的是a global variable declaration in a header problem.我为后代添加了pastebin代码(包含修复程序)。

/*This is the CallbackFunctions.h ------------------ */
#ifndef CALLBACKFUNCTIONS_H
#define CALLBACKFUNCTIONS_H
#include <GL/freeglut.h>

extern unsigned char keyboardKey;


/* Hardware Interrupts callback functions */
void display();                                     //called every single frame
void keyboard(unsigned char key, int x, int y);     //whenever a keyboard key is pressed/interrupt occurs
#endif // CALLBACKFUNCTIONS_H

/*This is the CallbackFunctions.cpp ------------------ */

#include "CallbackFunctions.h"



unsigned char keyboardKey = 0;

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}

void keyboard(unsigned char key, int x, int y)
{
    keyboardKey = key;
}



/* --------------- This is the Main.cpp ---------------- */

#include <GL/freeglut.h>
#include "CallbackFunctions.h"



#define WIDTH 700
#define HEIGHT 400

void setupGlutWindow(int *argc, char **argv, int width, int height);
void setupCallbackFunctions(); 

int main(int argc, char** argv)
{
    setupGlutWindow(&argc, argv, WIDTH, HEIGHT);
    setupCallbackFunctions();
    glutMainLoop();
}

void setupGlutWindow(int *argc, char **argv, int width, int height)
{
    glutInit(argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
    glutInitWindowSize(700, 500);
    glutCreateWindow("Project L3");
    glViewport(0, 0, width, height);
}

void setupCallbackFunctions()
{
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutKeyboardFunc(keyboard);
}