【问题标题】:Visual Studio Static Link (freeglut, glew)Visual Studio 静态链接 (freeglut, glew)
【发布时间】: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_STATICFREEGLUT_STATIC,而不是在代码中。
  • @HadiBrais 你的意思是在 C++->预处理器中?刚试了一下,没什么区别。
  • 今天在创建一个新项目时,我对 freeglut 的持续动态链接感到困惑,尽管我希望它是静态的。我把 FREEGLUT_STATIC 的前 4 个字符拼错了!

标签: c++ visual-studio linker dependencies static-libraries


【解决方案1】:

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

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

步骤 2) 以管理模式打开 PowerShell 并进入 vcpkg 目录

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

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

.\vcpkg integrate install

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多