【问题标题】:How do I get the static versions of the modules?如何获取模块的静态版本?
【发布时间】:2020-11-20 04:24:49
【问题描述】:

我正在开发一款 SFML 游戏。它在我的计算机上正常运行,但是如果我将它发送到另一台计算机,那么当我尝试运行它时,我会收到有关无法找到库的错误。我做了一些研究,发现原因是因为我使用的是动态库,并且要让程序自行运行,我需要静态库。但我如何得到这些?它们不在我的sfml 文件夹中。我尝试进行更多研究,但找不到构建或下载这些库的方法。

【问题讨论】:

  • 也许您可以创建一个可以安装在其他地方的分发包?然后你可以列出你的依赖项,系统应该安装它们作为安装游戏的一部分。或者在 Windows 中,创建一个包含所需 DLL 的安装程序。
  • @Someprogrammerdude 我尝试包含 SFML DLL,但我仍然收到一个错误,它找不到 libgcc_s_seh-1.dlllibstcdc++-6.dll
  • 是的,标准库需要这些。如果需要,您可以链接 statically
  • @Botje 我在编译时添加了-static-libstdc++,但现在它说缺少更多文件??

标签: c++ sfml


【解决方案1】:

只需转到您的 sfml Src 目录并查找 /bin 文件夹。将以下 DLL 复制到 exe 所在的游戏文件夹中:

DLLs 

    sfml-graphics.dll
    sfml-window.dll
    sfml-audio.dll
    sfml-network.dll
    sfml-system.dll

在 Linux 上,在目标计算机上安装 libsfml-dev。

【讨论】:

  • 如果将 dll 位置添加到 PATH 环境变量中也应该可以工作,对吧?
  • 当然可以。但是如果这个人试图运行一个用不同的 SFML 版本编写的软件,就会变得一团糟。
  • 我试过了,但我仍然得到一个错误,它找不到libgcc_s_seh-1.dlllibstcdc++-6.dll
【解决方案2】:

我确定您使用的是 mingw 编译器。您可以添加静态参数并尝试。

-static-libgcc -static-libstdc++

如果这不起作用,请尝试在您的标准编译器路径 /bin 文件夹中搜索这两个 DLL 文件并将它们放在您的 exe 所在的位置。

【讨论】:

  • 添加静态参数不起作用,但我复制了 DLL 文件并修复了它。谢谢!
猜你喜欢
  • 2021-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-10
  • 1970-01-01
  • 2017-09-18
  • 2010-12-27
  • 2021-02-25
相关资源
最近更新 更多