我将我的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)
答案 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");