Visual Studio 2013 C++链接虚拟机上的静态库glew、glfw

Visual Studio 2013 C++ link static library glew, glfw on virtual machine

本文关键字:静态 glew glfw 2013 Studio C++ 链接 虚拟机 Visual      更新时间:2023-10-16

我无法链接visual studio 2013 c++项目中的静态库。

  1. 我下载了最新的glew-1.11.0-win32和glfw-3.1.1.bin.win32
  2. 将路径设置为包含目录(项目属性>C/C++"其他包含目录")

    C:UsersUserDocumentsVisual Studio 2013ProjectsOpenGLOpenGLCommon
    
  3. 添加库文件的路径(项目属性>链接器>常规"附加库目录")

    C:UsersUserDocumentsVisual Studio 2013ProjectsOpenGLOpenGLCommonLibs
    
  4. 添加库名称(项目属性>链接器>输入"附加依赖项")

    glew32.lib
    glfw3.lib
    
  5. 定义前处理程序GLEW_STATIC(当我删除它时它是可见的)

    (project Properties > C/C++ > Preprocessor "Preprocessor Definitions")
    

当我构建我的项目时,出现以下错误:

Error   1   error LNK2001: unresolved external symbol _glewExperimental C:UsersUserdocumentsvisual studio 2013ProjectsOpenGLOpenGLSource.obj    OpenGL
Error   2   error LNK1120: 1 unresolved externals   C:UsersUserdocumentsvisual studio 2013ProjectsOpenGLDebugOpenGL.exe OpenGL

当我想完成这个

#include<Windows.h>

#include<GLglew.h>
#include<GLFWglfw3.h>
#include<iostream>
GLFWwindow * window;
using namespace std; 
int main()
{
    glewExperimental = TRUE;
    GLenum error = glewInit();
    if (error != GLEW_OK)
    {
        cout << "Error!" << endl;
    }
    system("pause");
    return 0;
}

Windows 8.1在虚拟机(VirtualBox)和Mirosoft Visual Studio 2013 上

我做错了什么?在本论坛的其他主题中,此解决方案运行正常。

当我从目录中删除这两个库时,我得到了相同的错误,所以Visual可能看不到这两个libs。但路径设置正确。包括路径工作,所有头文件都是可见的intelense。

@bogdan是正确的:GLEW的静态库版本是glew32s.lib.

顺便说一句,sourceforge.net上的GLEW安装页面说,如果你想要静态链接,你必须"在你的项目中包括GLEW.h和GLEW.c。"虽然这听起来很容易,但对每个openGL项目来说,这样做似乎是不必要的粗糙。相反,请执行以下操作:

  • 属性-公共属性-下添加GLEW_STATIC宏C/C++-预处理器-预处理器定义
  • 属性-公共属性-链接器-输入-其他库依赖项下添加glew32s.lib
  • 如果您没有将glew32s.lib复制到Visual Studio的默认库路径之一,请将该路径添加到属性-公共属性-链接器-常规-其他库目录下

为我工作。

如果您没有意识到这一点,您可以在属性管理器视图菜单-其他窗口-属性管理器)中添加新属性表,例如openglPropertySheet32Static。将您的openGL特定属性添加到其中。不要忘记显式保存工作表——我不确定它是否与项目一起自动保存。然后,对于未来的openGL项目,您所要做的就是在属性管理器中添加现有属性表openglPropertySheet32Static(您还记得保存它的位置吗?)。