我使用 freeglut 和 glew 创建了一个项目,并试图静态链接它们。目前,当我构建项目时,我得到一个 exe 和两个 dll(freeglut32.dll 和 glew32.dll)。我想让它只得到 exe。
为了安装库,我使用了 NuGet。 (Install-Package freeglut) 和 (Install-Package 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 中,我转到链接器 -> 输入 -> 附加依赖项并添加 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 不存在并且我只获得了单个可执行文件?
编辑: 由于建议: 我去了 Properties -> Referenced Packages 并将 freeglut 和 glew 设置为 Static。
最佳答案
您需要为 glew 和 freeglut 构建与您的项目设置兼容的静态库
第 1 步)下载并构建 vcpkg.exe(Microsoft 的开源自动打包工具)并确保构建的设置与您当前的项目相似。稍后 vcpkg 将使用这些设置作为默认值或固有值。
第二步)以管理模式打开PowerShell,进入vcpkg目录
步骤 3) 输入 .\vcpkg install glew:x64-windows-static
这会告诉打包器为 x64 机器构建项目的静态库。重复 freeglut。您的静态库已准备好进行手动链接。在 vcpkg\installed\x64-windows-static\下,您可以找到子目录 viz lib(您的 lib 在这里),并且 include 目录包含您的 glew 包含文件。
第 4 步)[可选] 如果您想将已安装的包自动链接到您的 visual studio C++ 项目(仅在 VS 2015 或更高版本中可用),请键入
.\vcpkg integrate install
许多开源 Windows 项目都可以使用此工具自动构建,享受吧。
关于c++ - Visual Studio 静态链接(freeglut,glew),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49042612/