C++ 在FLTK中使用GLUT

C++ 在FLTK中使用GLUT,c++,opengl,glut,freeglut,fltk,C++,Opengl,Glut,Freeglut,Fltk,我的应用程序由常规的FLTK小部件(按钮等)和OpenGL窗口组成。我的意图是使用GLUT在这个OpenGL窗口中绘制。按照说明: 您应该能够编译现有的GLUT源代码,包括 而不是这可以通过编辑 源代码,通过将-I开关更改为编译器,或通过提供 从GL/glut.h到FL/glut.h的符号链接 我也做了同样的操作,但出现以下链接错误: 1>Main.obj : error LNK2001: unresolved external symbol __imp__glClear@4 1>f

我的应用程序由常规的FLTK小部件(按钮等)和OpenGL窗口组成。我的意图是使用GLUT在这个OpenGL窗口中绘制。按照说明:

您应该能够编译现有的GLUT源代码,包括 而不是这可以通过编辑 源代码,通过将-I开关更改为编译器,或通过提供 从GL/glut.h到FL/glut.h的符号链接

我也做了同样的操作,但出现以下链接错误:

1>Main.obj : error LNK2001: unresolved external symbol __imp__glClear@4
1>fltkgl.lib(Fl_Gl_Window.obj) : error LNK2001: unresolved external symbol __imp__glClear@4
1>Main.obj : error LNK2001: unresolved external symbol __imp__glClearColor@16
1>Main.obj : error LNK2001: unresolved external symbol __imp__glFlush@0
1>fltkgl.lib(Fl_Gl_Window.obj) : error LNK2001: unresolved external symbol __imp__glFlush@0
1>Main.obj : error LNK2001: unresolved external symbol __imp__glLoadIdentity@0
1>fltkgl.lib(Fl_Gl_Window.obj) : error LNK2001: unresolved external symbol __imp__glLoadIdentity@0
1>fltkgl.lib(Fl_Gl_Window.obj) : error LNK2001: unresolved external symbol __imp__glReadBuffer@4
1>fltkgl.lib(Fl_Gl_Window.obj) : error LNK2001: unresolved external symbol __imp__glDrawBuffer@4
1>fltkgl.lib(Fl_Gl_Window.obj) : error LNK2001: unresolved external symbol __imp__glOrtho@48
1>fltkgl.lib(Fl_Gl_Window.obj) : error LNK2001: unresolved external symbol __imp__glViewport@16
1>fltkgl.lib(Fl_Gl_Window.obj) : error LNK2001: unresolved external symbol __imp__glGetIntegerv@8
1>fltkgl.lib(Fl_Gl_Window.obj) : error LNK2001: unresolved external symbol __imp__wglSwapLayerBuffers@8
1>fltkgl.lib(Fl_Gl_Window.obj) : error LNK2001: unresolved external symbol __imp__glCopyPixels@20
1>fltkgl.lib(Fl_Gl_Window.obj) : error LNK2001: unresolved external symbol __imp__glRasterPos2i@8
1>fltkgl.lib(gl_draw.obj) : error LNK2001: unresolved external symbol __imp__glRasterPos2i@8
1>fltkgl.lib(Fl_Gl_Window.obj) : error LNK2001: unresolved external symbol __imp__glDisable@4
1>fltkgl.lib(Fl_Gl_Window.obj) : error LNK2001: unresolved external symbol __imp__wglRealizeLayerPalette@12
1>fltkgl.lib(Fl_Gl_Choice.obj) : error LNK2001: unresolved external symbol __imp__wglShareLists@8
1>fltkgl.lib(Fl_Gl_Choice.obj) : error LNK2001: unresolved external symbol __imp__wglCreateContext@4
1>fltkgl.lib(Fl_Gl_Choice.obj) : error LNK2001: unresolved external symbol __imp__wglCreateLayerContext@8
1>fltkgl.lib(Fl_Gl_Choice.obj) : error LNK2001: unresolved external symbol __imp__wglMakeCurrent@8
1>fltkgl.lib(Fl_Gl_Choice.obj) : error LNK2001: unresolved external symbol __imp__wglDeleteContext@4
1>fltkgl.lib(Fl_Gl_Device_Plugin.obj) : error LNK2001: unresolved external symbol __imp__glPopClientAttrib@0
1>fltkgl.lib(Fl_Gl_Device_Plugin.obj) : error LNK2001: unresolved external symbol __imp__glReadPixels@28
1>fltkgl.lib(Fl_Gl_Device_Plugin.obj) : error LNK2001: unresolved external symbol __imp__glPixelStorei@8
1>fltkgl.lib(gl_draw.obj) : error LNK2001: unresolved external symbol __imp__glPixelStorei@8
1>fltkgl.lib(Fl_Gl_Device_Plugin.obj) : error LNK2001: unresolved external symbol __imp__glPushClientAttrib@4
1>fltkgl.lib(gl_draw.obj) : error LNK2001: unresolved external symbol __imp__glListBase@4
1>fltkgl.lib(gl_draw.obj) : error LNK2001: unresolved external symbol __imp__glGenLists@4
1>fltkgl.lib(gl_draw.obj) : error LNK2001: unresolved external symbol __imp__glDeleteLists@8
1>fltkgl.lib(gl_draw.obj) : error LNK2001: unresolved external symbol __imp__glCallLists@12
1>fltkgl.lib(gl_draw.obj) : error LNK2001: unresolved external symbol __imp__wglUseFontBitmapsW@16
1>fltkgl.lib(gl_draw.obj) : error LNK2001: unresolved external symbol __imp__glRasterPos2f@8
1>fltkgl.lib(gl_draw.obj) : error LNK2001: unresolved external symbol __imp__glEnd@0
1>fltkgl.lib(gl_draw.obj) : error LNK2001: unresolved external symbol __imp__glVertex2i@8
1>fltkgl.lib(gl_draw.obj) : error LNK2001: unresolved external symbol __imp__glBegin@4
1>fltkgl.lib(gl_draw.obj) : error LNK2001: unresolved external symbol __imp__glColor3ub@12
1>fltkgl.lib(gl_draw.obj) : error LNK2001: unresolved external symbol __imp__glIndexi@4
1>fltkgl.lib(gl_draw.obj) : error LNK2001: unresolved external symbol __imp__glDrawPixels@20
1>D:\Skunkworks\Snake3D\Snake3D\Release\Snake3D.exe : fatal error LNK1120: 35 unresolved externals
当我使用FreeGLUT时,程序正在正确编译。在将标题更改为使用FLTK版本的GLUT之后,我遇到了这些问题。我正在使用Microsoft Visual Studio 10,并添加了以下静态库作为“附加依赖项”:

freeglut.lib glew32.lib fltk.lib fltkgl.lib

我做错了什么?另外,如何使用GLUT在Fl\U Gl\U窗口中绘制

这是我的节目:

// Make the GUI here
#define WIN32
#include <GL/glew.h>
#include <FL/glut.H>
#include <FL/glu.h>
#include <FL/Fl.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Color_Chooser.H>
#include <FL/Fl_Gl_Window.H>
#include <FL/Fl_Menu_Bar.H>
#include <FL/fl_draw.H>
#include <FL/Fl_Button.H>

class Block
{
public:
    Block(int x, int y, int z)
    {
        xyz[0] = x;
        xyz[1] = y;
        xyz[2] = z;
    }

    int getX(){ return xyz[0];}
    int getY(){ return xyz[1];}
    int getZ(){ return xyz[2];}

    void setX(int x){ xyz[0]=x;}
    void setY(int y){ xyz[1]=y;}
    void setZ(int z){ xyz[2]=z;}

private:
    int xyz[3];
};

// Snake is an array blocks.
Block* snake;
// Mouse is a single block
Block* mouse;

class GlWindow : public Fl_Gl_Window
{
public:
    // Call back for draw
    void draw()
    {
        // Get the current state of the universe and draw it
        glClearColor(1.0f, 1.0f, 1.0f, 1.0f); // Clear the background of our window to red  
        glClear(GL_COLOR_BUFFER_BIT); //Clear the colour buffer (more buffers later on)  
        glLoadIdentity(); // Load the Identity Matrix to reset our drawing locations  

        //glutSolidCube(5);
        glFlush(); // Flush the OpenGL buffers to the window  
    }

    // To handle key-events
    void handle()
    {
    }

    // Constructor
    GlWindow(int X, int Y, int W, int H, const char* L=0): Fl_Gl_Window(X,Y,W,H,L)
    {
    }

};

void buildGUI(int argc, char** argv)
{
    // Main Window  
    Fl_Double_Window *window = new Fl_Double_Window(800,500);
    window->label("Snake3D");
    window->color(FL_LIGHT3);
    window->begin();

    // Menu Bar
    Fl_Menu_Bar* menubar = new Fl_Menu_Bar(0,0,800,30);
    menubar->color(FL_LIGHT3);
    menubar->down_color(fl_rgb_color(0,145,255));
    menubar->box(FL_THIN_UP_BOX);
    menubar->add("File/Exit");
    menubar->add("Help/About");

    // OpenGL Window
    GlWindow* gameWindow = new GlWindow(200,30,600,470);

    // Start Button
    Fl_Button* startButton = new Fl_Button(50,200,100,30,"Start");
    Fl_Button* pauseButton = new Fl_Button(50,300,100,30,"Pause");
    window->show();
    window->end();
    Fl::run();
}

int main(int argc, char ** argv)
{   
    // Build GUI
    buildGUI(argc,argv);
}
//在这里创建GUI
#定义WIN32
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
类块
{
公众:
块(整数x,整数y,整数z)
{
xyz[0]=x;
xyz[1]=y;
xyz[2]=z;
}
int getX(){return xyz[0];}
int getY(){return xyz[1];}
int getZ(){return xyz[2];}
void setX(int x){xyz[0]=x;}
void setY(int y){xyz[1]=y;}
void setZ(int z){xyz[2]=z;}
私人:
int-xyz[3];
};
//Snake是一个数组块。
方块*蛇;
//鼠标是单个块
块*鼠标;
类GlWindow:公共Fl\U Gl\U窗口
{
公众:
//回电取款
作废提款()
{
//获取宇宙的当前状态并绘制它
glClearColor(1.0f,1.0f,1.0f,1.0f);//将窗口背景清除为红色
glClear(GL_COLOR_BUFFER_BIT);//清除颜色缓冲区(以后会有更多缓冲区)
glLoadIdentity();//加载标识矩阵以重置绘图位置
//立体立方体(5);
glFlush();//将OpenGL缓冲区刷新到窗口
}
//处理关键事件
无效句柄()
{
}
//建造师
GlWindow(int X,int Y,int W,int H,const char*L=0):Fl_Gl_窗口(X,Y,W,H,L)
{
}
};
void buildGUI(int argc,char**argv)
{
//主窗口
Fl_双_窗口*窗口=新Fl_双_窗口(800500);
窗口->标签(“蛇形3D”);
窗口->颜色(FL_LIGHT3);
窗口->开始();
//菜单栏
Fl_菜单栏*菜单栏=新的Fl_菜单栏(0,0800,30);
菜单栏->颜色(FL_LIGHT3);
菜单栏->向下颜色(fl\U rgb\U颜色(0145255));
菜单栏->方框(FL\u THIN\u UP\u方框);
菜单栏->添加(“文件/退出”);
菜单栏->添加(“帮助/关于”);
//OpenGL窗口
GlWindow*gameWindow=新GlWindow(200,30600470);
//开始按钮
Fl_按钮*开始按钮=新的Fl_按钮(50200100,30,“开始”);
Fl_按钮*暂停按钮=新的Fl_按钮(50300100,30,“暂停”);
窗口->显示();
窗口->结束();
Fl::run();
}
int main(int argc,字符**argv)
{   
//构建GUI
构建GUI(argc、argv);
}
这与过剩无关。 所有这些函数都是OpenGL 1.1和Windows特定窗口系统API(WGL)的一部分

要解决这个问题,只需将
opengl32.lib
添加到库中

<> P.>几乎所有这些功能都被弃用了,如果考虑到可移植性,你可能会考虑寻找一个现代的替代FLTKGL。

这与GLUT无关。 所有这些函数都是OpenGL 1.1和Windows特定窗口系统API(WGL)的一部分

要解决这个问题,只需将
opengl32.lib
添加到库中

<> P.>几乎所有这些功能都被弃用了,如果考虑到可移植性,你可能会考虑寻找一个现代的替代FLTKGL。

这与GLUT无关。 所有这些函数都是OpenGL 1.1和Windows特定窗口系统API(WGL)的一部分

要解决这个问题,只需将
opengl32.lib
添加到库中

<> P.>几乎所有这些功能都被弃用了,如果考虑到可移植性,你可能会考虑寻找一个现代的替代FLTKGL。

这与GLUT无关。 所有这些函数都是OpenGL 1.1和Windows特定窗口系统API(WGL)的一部分

要解决这个问题,只需将
opengl32.lib
添加到库中

<> P.>几乎所有这些功能都被弃用了,如果考虑到可移植性,你可能会考虑寻找一个FLTKGL的现代替代方案。