C++ 如何在不必将其放入系统根目录的情况下包含glew32.dll

C++ 如何在不必将其放入系统根目录的情况下包含glew32.dll,c++,visual-studio-2010,opengl,dll,glew,C++,Visual Studio 2010,Opengl,Dll,Glew,如何将glew32.dll添加到visual Studio 2010,而不必将其放在系统根目录下 我跟随了几个添加glew32.dll的在线示例,所有这些都得到了相同的答案,只是将其放在系统根目录中 但只是为了学习 是否有一种方法可以将glew32.dll包含到Visual Studio 2010中,而不必将其放入系统根目录中 如果您有答案,请给出一个如何回答的示例。这并没有回答您原来的问题,而是演示了如何避免该问题。 通常我不会以这种方式“回答”某些问题,但使用glew的DLL版本几乎没有任何

如何将glew32.dll添加到visual Studio 2010,而不必将其放在系统根目录下

我跟随了几个添加glew32.dll的在线示例,所有这些都得到了相同的答案,只是将其放在系统根目录中

但只是为了学习

是否有一种方法可以将glew32.dll包含到Visual Studio 2010中,而不必将其放入系统根目录中

如果您有答案,请给出一个如何回答的示例。

这并没有回答您原来的问题,而是演示了如何避免该问题。 通常我不会以这种方式“回答”某些问题,但使用glew的DLL版本几乎没有任何好处。这并不是说你可以打开这个DLL的新版本并利用新的功能,你必须在你最初编译你的软件时知道扩展

为了避免软件附带
glew32.dll
,您可以链接到
glew32s.lib
。您的.exe的大小将增加,但不会大幅增加,而且您可能不得不发布
glew32.dll
,因此大小上的差异是没有意义的

最简单的方法是利用MSVC编译器的特殊
#pragma
#define GLEW_STATIC//静态链接到GLEW时必须定义此项
#包括“glew.h”
#pragma注释(lib,“glew32s.lib”)//链接到glew32s.lib
或者,您可以在项目设置中设置库,但这需要通过MSVC GUI进行操作,而我没有Visual Studio 2010的副本来向您展示如何实现这一点

是否有一种方法可以将glew32.dll包含到Visual Studio 2010中,而不必将其放入系统根目录中

不要认为它是你想添加到VS中的东西,而应该认为它是你正在构建的程序的一项资产:只需将DLL复制到程序EXE的同一文件夹中即可。Windows将首先在那里查找DLL,然后再在系统目录中查找


当然,GLEW太小了,所以它可能是更好的选择,所以只需静态链接它。

为什么不完全避免使用GLEW的DLL版本,只需链接到静态库?这样,您就不必担心DLL放在哪里了,因为它是不需要的。您的二进制大小可能会增加,但这通常不是什么大问题。我只是按照wrangler链接来做的。你能举个例子说明如何设置这个吗?我尽可能避免链接,因为我曾经做过一个项目,其中有10个包含了彼此需要的内容,我做过噩梦。洛莉做了那件事。但是我的项目仍然在抱怨我没有glew32.dll确保删除任何引用
glew32.lib
的项目设置。等等,我很困惑>>我以为我的目标是包含glew32.lib而不是.dll为什么我要删除任何glew32.lib引用。不,
glew32.lib
只是等式的一半。这是您链接到的动态库,它依赖于
glew32.dll
glew32s.lib
(s可能很难注意到,但它有很大的不同)是一种不同类型的库(静态),在运行时不依赖于DLL。如果你想使用静态链接版本,你需要从你的项目设置中删除动态链接版本。我跳过pragma注释,因为它们是特定于windows的,这样做很容易,哈哈。但是谢谢你的所有信息,现在真的帮助了它的工作。除了我的devIL.dll丢失错误之外,尽管我也在使用libs,但是这里有一个有趣的注意点。当您通过调试器运行项目时,VisualStudioIDE会在运行时将工作目录设置为项目的根目录,并且您可以将DLL放在那里以简化工作。当您有5个或6个构建配置时(而不是将相同的DLL放在每个构建配置目录中),它很方便。