将GLEW与Visual Studios联系起来的问题

时间:2013-05-23 02:04:32

标签: visual-studio-2010 opengl linker glew

我尝试了几种方法让GLEW使用我的VS2010项目。没有成功。起初我尝试使用网站上预先构建的库和dll。我从http://glew.sourceforge.net/index.html下载了这些预先构建的文件,并执行了类似:setting up GLEW windows?

的操作
  1. .h文件放在C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Include

  2. .lib文件放在C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Lib \ x64中(我还将它们放在一级以防万一)

    < / LI>
  3. glew32.dll转到C:\ Windows \ SysWOW64

  4. linker-&gt;输入将glew32.lib,GlU32.lib和OpenGL32.lib添加到其他依赖项

  5. 预处理器定义:放入GLEW_BUILD和GLEW_STATIC(我的程序需要是一个DLL,但其他似乎与STATIC成功,所以我包括两者)

  6. 当我使用这些设置运行程序时,glewInit()不是那么GLEW_OK。即使glewInit()失败,它仍然会奇怪地识别该函数。当我使用像“glCreateProgram()”这样的另一个glew函数时,我收到以下错误:

    Error   56  error LNK2020: unresolved token (0A000327) __glewCreateProgram  
    C:\Users\aab\studyWrist\Visualization\libCoin3D\ShaderHandler.obj   libCoin3D
    
    Error   57  error LNK2001: unresolved external symbol __glewCreateProgram   
    C:\Users\aab\studyWrist\Visualization\libCoin3D\ShaderHandler.obj   libCoin3D
    
    Error   58  error LNK1120: 2 unresolved externals   
    C:\Users\aab\studyWrist\Visualization\libCoin3D\Debug\libCoin3D.dll libCoin3D
    

    所以,关于stackoverflow的一些其他建议是重建glew。接下来我尝试在VS2010中构建glew32d。我跟着OpenGL: How to compile glew32.dll from source file并获得了glew32d.dll和glew32d.lib。

    1. glew32d.lib放入C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Lib \ x64(如果我把它放在x64文件夹中,程序只识别lib,而不是升级)

    2. glew32d.dll转到C:\ Windows \ SysWOW64

    3. linker-&gt;输入添加glew32d.lib(此更改),GlU32.lib和OpenGL32.lib添加到其他依赖项

    4. 预处理器定义:放入GLEW_BUILD和GLEW_STATIC

    5. 我的以下错误仅由glewInit引起:

      Error   56  error LNK2028: unresolved token (0A000383) "extern "C" unsigned int 
      __cdecl glewInit(void)" (?glewInit@@$$J0YAIXZ) referenced in function "public: __cdecl 
      MasterCube::MasterCube(void)" (??0MasterCube@@$$FQEAA@XZ)   
       C:\Users\aab\studyWrist\Visualization\libCoin3D\MasterCube.obj libCoin3D
      
      Error   57  error LNK2019: unresolved external symbol "extern "C" unsigned int 
      __cdecl glewInit(void)" (?glewInit@@$$J0YAIXZ) referenced in function "public: __cdecl 
      MasterCube::MasterCube(void)" (??0MasterCube@@$$FQEAA@XZ)   
      C:\Users\aab\wristuptodate\studyWrist\Visualization\libCoin3D\MasterCube.obj    
      libCoin3D
      

      知道出了什么问题以及如何解决它?

2 个答案:

答案 0 :(得分:6)

不要将它们添加到系统目录中。你不应该把东西扔进系统目录。或者MSVC目录。你应该在你的驱动器上的某个地方有自己的位置来做这些事情,以免你不小心破坏了东西。 您告诉您的工具,即Visual Studio在哪里可以找到您的库,而不是将您的库放在工具,即visual studio目录中。 您可以将库保留在项目目录中。 您可以按照以下几组来设置GLEW我假设您已经创建了VC ++ win32控制台应用程序项目。

  

步骤1.在项目目录中创建目录让我们假设   目录名称为“ thirdparty

     

步骤2.复制并通过目录中的 glew-1.9.0 库文件夹   的第三方

     

步骤3.现在转到菜单项目 - &gt;(projectName)属性..或按   Alt + F7。您将看到项目属性窗口。

     

步骤4.转到“配置属性” - > VC ++目录选项。从   在右边给出了glew库的路径。包括在内   目录提供路径:$(ProjectDir)thirdparty \ glew-1.9.0 \ include;在   库目录提供路径:$(ProjectDir)thirdparty \ glew-1.9.0 \ lib;

现在按照以下步骤进行链接。

  

步骤5.转到链接器 - >输入选项。链接glew32.dll.In其他   依赖关系:glew32.dll;

答案 1 :(得分:3)

最佳做法是将GLEW添加到项目文件夹并将其链接到您的应用程序。您可以在此处找到一个分步教程,用于链接GLEW(以及其他一些库):

http://solarianprogrammer.com/2013/05/10/opengl-101-windows-osx-linux-getting-started/

只需忽略与您无关的部分,然后转到描述如何在Windows中创建OpenGL项目的部分。