如何将glext.lib链接到windows 64bit应用程序?

时间:2014-10-25 07:39:39

标签: visual-studio winapi opengl 64-bit 32bit-64bit

我将我的32bit项目转换为64bit,因此有一些错误。他们中的大多数都是可以解决的,但我在那里挂钩glext.lib时遇到了问题。

1>LINK : fatal error LNK1104: cannot open file glext.lib

在32位版本上它运行正常。

我该怎么办?

以下是我的定义,包括x86项目;

#pragma once
#include "gl_camera.h"
#define GL_GLEXT_PROTOTYPES
#include "utils.h"
#include <gl\GL.h>
#include <GL\glext.h>
#include "navigation.h"
#include "Resource.h"


1>window_glview.obj : error LNK2019: ссылка на неразрешенный внешний символ glBindBuffer в функции "public: void __cdecl window_glview::add_mesh_to_GPU(class mesh *)" (?add_mesh_to_GPU@window_glview@@QEAAXPEAVmesh@@@Z)
1>window_glview.obj : error LNK2019: ссылка на неразрешенный внешний символ glGenBuffers в функции "public: void __cdecl window_glview::add_mesh_to_GPU(class mesh *)" (?add_mesh_to_GPU@window_glview@@QEAAXPEAVmesh@@@Z)
1>window_glview.obj : error LNK2019: ссылка на неразрешенный внешний символ glBufferData в функции "public: void __cdecl window_glview::add_mesh_to_GPU(class mesh *)" (?add_mesh_to_GPU@window_glview@@QEAAXPEAVmesh@@@Z)
1>window_glview.obj : error LNK2019: ссылка на неразрешенный внешний символ glAttachShader в функции "public: bool __cdecl window_glview::init_scene_shaders(void)" (?init_scene_shaders@window_glview@@QEAA_NXZ)
1>window_glview.obj : error LNK2019: ссылка на неразрешенный внешний символ glCompileShader в функции "public: bool __cdecl window_glview::init_scene_shaders(void)" (?init_scene_shaders@window_glview@@QEAA_NXZ)
1>window_glview.obj : error LNK2019: ссылка на неразрешенный внешний символ glCreateProgram в функции "public: bool __cdecl window_glview::init_scene_shaders(void)" (?init_scene_shaders@window_glview@@QEAA_NXZ)
1>window_glview.obj : error LNK2019: ссылка на неразрешенный внешний символ glCreateShader в функции "public: bool __cdecl window_glview::init_scene_shaders(void)" (?init_scene_shaders@window_glview@@QEAA_NXZ)
1>window_glview.obj : error LNK2019: ссылка на неразрешенный внешний символ glEnableVertexAttribArray в функции "public: void __cdecl window_glview::add_mesh_to_GPU(class mesh *)" (?add_mesh_to_GPU@window_glview@@QEAAXPEAVmesh@@@Z)

2 个答案:

答案 0 :(得分:0)

听起来您没有为64位版本正确配置库目录,因此Visual Studio无法找到链接库。

在Visual Studio中,库路径以前是从工具 - >配置的。选项 - &gt;项目和解决方案 - &gt; VC ++目录,但它改变了(我认为在VS2010中),现在它们是从 Project - &gt;配置的。属性 - &gt;配置属性 - &gt; VC ++目录

检查您为32位版本设置的内容,然后您需要为64位版本添加相应的路径。

答案 1 :(得分:0)

好的,这是我发现的。 要在64位配置中使用基本的OpenGL函数,您仍然需要相同的OpenGL32.lib 我已阅读此页面以查找此内容: https://www.opengl.org/wiki/Getting_Started#Windows 这是他们所说的:

  

...在Windows下,您需要静态链接到名为的库   OpenGL32.lib(请注意,如果你还是那么你仍然可以链接到OpenGL32.lib   构建一个64位可执行文件。 &#34; 32&#34;部分毫无意义)....

在链接器设置中包含OpenGL32.lib后,我们需要

#include <gl\GL.h>
#include <GL\glext.h>

,这样我们就拥有了所有扩展函数定义。

之后我们创建了一个CreateWindowEx的窗口, 为窗口的HDC设置合适的像素格式。如果没有正确设置像素格式,下一个命令将给出错误。 在那之后我们wglCreateContext(),检查它是否没有返回NULL 接下来,wglMakeCurrent() - 输入当前的GL上下文并手动加载所有需要的函数;一个接一个。

PFNGLATTACHSHADERPROC glAttachShader;
PFNGLCOMPILESHADERPROC glCompileShader;
PFNGLCREATEPROGRAMPROC glCreateProgram;

glCompileShader=(PFNGLCOMPILESHADERPROC)wglGetProcAddress("glCompileShader");
glAttachShader=(PFNGLATTACHSHADERPROC)wglGetProcAddress("glAttachShader");
glCreateProgram=(PFNGLCREATEPROGRAMPROC)wglGetProcAddress("glCreateProgram");