2015-06-27 78 views
3

我无法在Visual Studio 2013 C++项目中链接静态库。Visual Studio 2013 C++链接静态库glew,虚拟机上的glfw

  1. 我下载了最新的GLEW-1.11.0-win32和GLFW-3.1.1.bin.WIN32
  2. 设定的路径,包括目录 (项目属性> C/C++ “附加包含目录”)

    C:\Users\User\Documents\Visual Studio 2013\Projects\OpenGL\OpenGL\Common 
    
  3. 添加路径LIB文件 (项目属性>链接>常规 “附加库目录”)

    C:\Users\User\Documents\Visual Studio 2013\Projects\OpenGL\OpenGL\Common\Libs 
    
  4. 添加库名 (项目属性>链接>输入 “附加依赖”)

    glew32.lib 
    glfw3.lib 
    
  5. 定义preprocesor GLEW_STATIC(当我删除此才看得到)

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

当我建立我的项目以下错误发生:

Error 1 error LNK2001: unresolved external symbol _glewExperimental C:\Users\User\documents\visual studio 2013\Projects\OpenGL\OpenGL\Source.obj OpenGL 
Error 2 error LNK1120: 1 unresolved externals C:\Users\User\documents\visual studio 2013\Projects\OpenGL\Debug\OpenGL.exe OpenGL 

当我想这COMPLE

#include<Windows.h> 


#include<GL\glew.h> 
#include<GLFW\glfw3.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没有看到这两个库。但路径设置正确。包含路径作品,所有头文件都可以通过intelsense查看。

+0

看着[文档在这里](http://glew.sourceforge.net/install.html),在我看来,'glew32.lib'不是实际的静态库,而只是一个导入库'glew32.dll'。该文件似乎意味着您需要实际构建源代码以便静态链接到它。 – bogdan

+0

你知道该怎么做吗?每个教程都是关于链接自己的dll库。我发现了这个[link](http://blog.nuclex-games.com/2012/03/how-to-consume-dlls-in-visual-cxx/comment-page-1/),但它没有起作用。任何想法? – Szczepan

+0

我从GLEW网站下载了二进制包,发现在'lib \ Release \ Win32'目录下,'glew32.lib'旁边还有'glew32s.lib'。我有一个偷偷的怀疑,那个's'是你正在寻找的实际的静态库。因此,在“附加依赖关系”中只进行这种更改并再次尝试(在您的设置中,其他一切似乎都很好,而且我在前面的评论中引用的文档似乎已过时 - [此其他页面](http:// glew .sourceforge.net/build.html)表示,预编译的静态库应该包含在二进制Windows包中)。 – bogdan

回答

2

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

顺便提一句,sourceforge.net上的GLEW installation page表示如果你想要静态链接,你必须“包含glew.h和glew.c到你的项目中。”虽然这听起来很容易,但对于每个OpenGL项目来说,这看起来不必要的粗糙。相反,做到以下几点:

  • 添加GLEW_STATIC宏观调控下属性 - 通用属性 - C/C++ - 预处理 - 预处理定义
  • 添加glew32s.lib属性 - 通用属性 - 链接器 - 输入 - 附加库依赖项
  • 如果您没有复制glew32s。LIB到Visual Studio中的默认库路径之一,路径添加到它下下属性 - 通用属性 - 链接器 - 常规 - 附加库目录

为我工作。

如果您不知道这一点,您可以添加新的性能表,例如, openglPropertySheet32Static,在物业管理查看菜单 - 其他窗口 - 物业管理)。将你的openGL特定属性添加到它。不要忘记明确保存表格 - 我不确定它是否会自动保存在项目中。然后,你需要为未来的OpenGL项目做的事情是添加现有的属性表,openglPropertySheet32Static,在物业经理(你记得你保存它的地方,对吗?)。

+0

美丽。经过几个小时寻找解决我的愚蠢的DLL问题。 – finnrayment