4

我尝试了几种方法让 GLEW 与我的 VS2010 项目一起工作。没有成功。起初我尝试使用网站上预先构建的库和 dll。我从http://glew.sourceforge.net/index.html下载了这些预建文件并做了类似的事情:设置 GLEW 窗口?

  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. 链接器->输入将 glew32.lib、GlU32.lib 和 OpenGL32.lib 添加到附加依赖项

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

当我使用这些设置运行程序时,glewInit() 并不是那么 GLEW_OK。即使 glewInit() 失败,它仍然可以奇怪地识别该函数。当我使用另一个 glew 函数(如“glCreateProgram()”)时,出现以下错误:

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

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

4

2 回答 2

7

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

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

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

第 3 步。现在转到菜单项目->(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;

于 2013-05-23T06:44:58.817 回答
3

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

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

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

于 2013-05-23T13:21:25.980 回答