【问题标题】:Problems linking GLEW with Visual Studios将 GLEW 与 Visual Studio 关联的问题
【发布时间】:2013-05-18 06:10:04
【问题描述】:

我尝试了几种方法让 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 中(我也将它们放上一级以防万一)

  3. glew32.dll 转到 C:\Windows\SysWOW64

  4. linker->input 将 glew32.lib、GlU32.lib 和 OpenGL32.lib 添加到 Additional Dependencies

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

当我使用这些设置运行程序时,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->input add glew32d.lib(这个改了)、GlU32.lib、OpenGL32.lib到Additional Dependencies

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

我的以下错误只是由 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

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

【问题讨论】:

    标签: visual-studio-2010 opengl linker glew


    【解决方案1】:

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

    步骤 1. 在项目目录中创建目录让我们假设 目录名称是“第三方

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

    第 3 步。现在转到菜单 Project->(projectName)properties.. 或按 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;

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 感谢您提供此资源,感谢您的帮助!
      猜你喜欢
      • 2012-09-18
      • 1970-01-01
      • 1970-01-01
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 2011-03-29
      相关资源
      最近更新 更多