所以我已经在控制台C ++中编程了一段时间,但我最终决定尝试使用OpenGL的图形应用程序。我花了一段时间才知道GLUT和其他库已经过时了,所以我开始安装和准备GLEW和FreeGLUT。如果我的包括工作,我设法达到了目的;但是,现在我遇到了这个问题:
Visual Studio告诉我,当它显然位于system32文件夹中时,我没有glew32.dll。这不是这些库的默认文件夹吗?
此外,每次我运行我的程序(因此得到此错误)时,即使在程序关闭后,visual studio进程仍在后台继续运行。它拒绝结束并导致另一个问题:每当我重新进入Visual Studio时,我都会收到一条消息,说明默认存储位置当前正被另一个visual studio实例(后台运行的那个)使用。结果,到继续工作我每次都要重新启动计算机。
有没有人知道这可能有什么问题,以及我如何能够解决问题?这是我第一次安装库,但我没有触及系统文件夹中的随机内容(至少没有故意),当我做了一些我不应该做的事情时,我一直小心翼翼地清理自己。< / p>
其他信息:
Visual Studio 2012 freeGLUT和GLEW的最新稳定版本 Windows 8.1 64位
答案 0 :(得分:4)
你真的不应该使用glew(glew32.lib
)的动态链接版本。只需链接静态链接库(glew32s.lib
),忘记DLL版本曾经存在。
为了善良,请不要将 glew32.dll 安装到 System32 !
我愿意为您运行64位版本的Microsoft Windows投入大量资金。
您正在编译32位应用程序,它将在Microsoft Windows的32位兼容层(称为 Windows on Windows )上运行。在兼容层中运行时,所有32位DLL都将来自单独的位置 SysWow64 。
这可能令人困惑,因为你会认为 System32 意味着32位......但由于历史原因, System32 实际上包含了< em> native 版本的Windows(Win32上为32位,x64上为64位)。
然而, 不 将 glew32.dll 安装到 SysWoW64 :)
由于你在评论中提到你不明白“链接反对glew32s.lib”是什么意思,我只会告诉你头文件中的这一行导致链接器使用glew的DLL版本:
#pragma comment (lib, "glew32.lib")
对于Microsoft Visual C ++编译器来说,这是一个丑陋的黑客攻击,它告诉链接器将其添加为依赖项。其他编译器(例如g ++)不理解它,但如果您的软件总是使用Visual Studio编译,则可以继续使用它。
要将您的软件更改为使用静态(非DLL)版本的glew,只需将该行替换为:
#pragma comment (lib, "glew32s.lib")
现在您不需要将DLL与您的程序一起分发,这整个问题实际上会消失。