【发布时间】:2018-08-09 02:28:49
【问题描述】:
我使用 freeglut 和 glew 创建了一个项目,并试图静态链接它们。目前,当我构建项目时,我得到一个 exe 和两个 dll(freeglut32.dll 和 glew32.dll)。我想让它只得到exe。
为了安装我使用 NuGet 的库。 (安装包 freeglut)和(安装包 glew)。 NuGet 将 glew.lib 下载到 .\packages\glew.1.9.0.1\build\native\lib\v110\x64\Release\static\glew.lib 和 freeglut 到 .\packages\freeglut.2.8.1.15\build\native\ lib\v110\x64\Release\static\freeglut.lib。 我假设它们是我想要的 .lib 文件,因为它们都超过 1 MB。
在 Visual Studio 中,我进入 Linker -> Input -> Additional Dependencies 并添加了 freeglut.lib 和 glew.lib 的路径。我还在我的代码中添加了#define GLEW_STATIC 和#define FREEGLUT_STATIC。链接库依赖项已打开。
即便如此,构建该项目仍为我提供了 654 KB 的 exe 以及 224 KB 的 freeglut.dll 和 356 KB 的 glew32.dll。 如何确保 glew32.dll 和 freeglut.dll 不存在,而我只获得了单个可执行文件?
编辑: 由于建议: 我去了属性-> 引用包并将 freeglut 和 glew 设置为静态。
【问题讨论】:
-
尝试在项目设置中定义
GLEW_STATIC和FREEGLUT_STATIC,而不是在代码中。 -
@HadiBrais 你的意思是在 C++->预处理器中?刚试了一下,没什么区别。
-
今天在创建一个新项目时,我对 freeglut 的持续动态链接感到困惑,尽管我希望它是静态的。我把
FREEGLUT_STATIC的前 4 个字符拼错了!
标签: c++ visual-studio linker dependencies static-libraries