我使用 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 中,我转到 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 而我只得到了一个可执行文件?

编辑:
由于建议:
我去了 Properties -> Referenced Packages 并设置 freeglut 和 glew 为静态。

最佳答案

您需要为与您的项目设置兼容的 glew 和 freeglut 构建静态库

步骤 1) 下载并构建 vcpkg.exe(来自 Microsoft 的开源自动打包工具)并确保使build设置与您当前的项目相似。稍后 vcpkg 将使用这些设置作为默认值或内在值。

步骤 2) 在管理模式下打开 PowerShell 并转到 vcpkg 目录

步骤 3) 输入 .\vcpkg install glew:x64-windows-static 这告诉打包器为 x64 机器构建项目的静态库。重复 freeglut。您的静态库已准备好进行手动链接。在 vcpkg\installed\x64-windows-static\下,您可以找到子目录即 lib(您的 lib 在这里),并且包含目录包含您的 glew 包含文件。

步骤 4) [可选] 如果要将已安装的包自动链接到 Visual Studio C++ 项目(仅在 VS 2015 或更高版本中可用),请键入

.\vcpkg integrate install

很多开源windows项目都可以使用这个工具自动构建,尽情享受吧。

关于c++ - Visual Studio 静态链接(freeglut,glew),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49042612/

10-13 04:35