【问题标题】:How Can I Include glew32.dll Without Having To Put It In system Root如何在无需将其放入系统根目录的情况下包含 glew32.dll
【发布时间】:2014-08-26 23:28:56
【问题描述】:

如何将 glew32.dll 添加到 Visual Studios 2010 而无需将其置于系统根方向。

我遵循了一些添加glew32.dll的在线示例,都得出了相同的答案,只需将其放在系统根目录中即可。

但只是为了学习。

有没有办法将 glew32.dll 包含到 Visual Studios 2010 中,而不必将其放在系统根目录中。

如果您有答案,请举例说明如何操作。

【问题讨论】:

  • 为什么不完全避免使用 GLEW 的 DLL 版本而只链接到静态库呢?然后您不必担心将 DLL 放在哪里,因为不需要它。您的二进制文件大小可能会增加,但这通常不是什么大问题。
  • 我只是跟随牧马人链接来做到这一点。你可以举一个关于如何设置的例子吗?我尽量避免链接,因为我曾经做过一个项目,有 10 个包含彼此需要的项目,所以我做了噩梦。头疼哈哈

标签: c++ visual-studio-2010 opengl dll glew


【解决方案1】:

这并没有回答您最初的问题,而是演示了如何避免该问题。

通常我不会以这种方式“回答”问题,但使用 DLL 版本的 glew 确实几乎没有任何好处。并不是说你可以弹出这个 DLL 的新版本并利用新功能,你必须在最初编译软件时了解扩展。

为避免将glew32.dll 与您的软件一起发送,您可以链接到glew32s.lib。您的 .exe 会变大,但不会大幅增加,而且您可能不得不发送 glew32.dll,因此大小差异没有实际意义。

最简单的做法是利用 MSVC 编译器的特殊 #pragma

#define GLEW_STATIC // This must be defined when statically linking to GLEW
#include "glew.h"

#pragma comment (lib, "glew32s.lib") // Link to glew32s.lib

或者,您可以在项目设置中设置库,但这涉及到通过 MSVC GUI,我没有 Visual Studio 2010 的副本来向您展示如何完成。

【讨论】:

  • 我做到了。但我的项目仍然抱怨我没有 glew32.dll
  • 确保删除所有引用glew32.lib的项目设置。
  • 等等,我很困惑 >.> 我以为我的目标是包含 glew32.lib 而不是 .dll 为什么我要删除任何 glew32.lib 引用。
  • 不,glew32.lib 只是等式的一半。那就是你链接到的 dynamic 库,它依赖于glew32.dllglew32s.libs 可能很难注意到,但它有很大的不同)是一种不同类型的库(静态),它不依赖于 DLL运行。如果要使用静态链接版本,则需要从项目设置中删除动态链接版本。
  • 我跳过了 pragma cmets,因为它们是特定于 Windows 的,而且这样做很容易,哈哈。但是感谢您的所有信息确实帮助了它现在的所有工作。除了我的 devIL.dll 丢失错误,即使我也使用那个库 X_X
【解决方案2】:

有没有办法将 glew32.dll 包含到 Visual Studios 2010 中,而不必将其放在系统根目录中。

不要认为它是你想添加到 VS 中的东西。而是将其视为您正在构建的程序的资产:只需将 DLL 复制到程序的 EXE 的同一文件夹中。 Windows 会先在此处查找 DLL,然后再在系统目录中查找。

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

【讨论】:

  • 有一个有趣的注意点。当您通过调试器运行它时,Visual Studio IDE 在运行时将工作目录设置为项目的根目录,您可以将 DLL 放在那里以使工作更轻松。当您有 5 或 6 个构建配置时,它会派上用场(而不是将相同的 DLL 放在每个构建配置目录中)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-09
  • 2021-10-30
  • 2016-01-30
  • 2013-10-10
相关资源
最近更新 更多