【问题标题】:Running a SFML C++ program with minGW on Windows 10在 Windows 10 上使用 minGW 运行 SFML C++ 程序
【发布时间】:2017-10-26 14:21:05
【问题描述】:

所以我试图在我的 Windows 笔记本电脑上运行一个示例 SFML 程序。如果相关,源代码在this page.

所以首先我使用这个命令制作 .o 文件 -

g++ -c a.cpp -ISFML/SFML/include

其中a.cpp为主文件,我的SFML包位于SFML/SFML。

然后我用这个命令编译-

g++ a.o -o a -LSFML/SFML/lib -lsfml-graphics -lsfml-window -lsfml-system

当我第一次运行程序时,我得到了关于无法找到某些 dll、sfml-graphics-2 等的错误。所以我找到了它们并将它们放在 exe 旁边。但是现在当我运行时,我得到了这个奇怪的错误:

过程入口点 _ZNSt7__cxx1112basic_stringSt11char_traitsIcESalcEE7reserveEj 在动态链接库中找不到。

这是怎么回事?

【问题讨论】:

  • 如果通过在命令行中添加 -std=c++11 来启用编译到 C++11 标准会发生什么?
  • 您是否为您的编译器使用了正确的库和 dll?这听起来更像是您使用了不正确的。
  • @Rosme 这是从官网下载的windows 32
  • 正如the SFML download page 所说以及@Rosme 所要求的,操作系统不是主要问题。您可能使用了错误版本的编译器、一些旧的 SFML 库等。最坏的情况是,如果您的编译器未在其中列出,您必须自己编译 SFML。
  • @Chringo 如果你不介意帮助我,我将如何自己编译 sfml

标签: c++ windows g++ mingw sfml


【解决方案1】:

正如the SFML download page 所说,您可能使用了错误版本的编译器,以及您尚未从工作目录中删除的其他SFML 库版本,这可能导致代码和链接器不匹配。最坏的情况是,如果您的编译器未在此处列出,您必须自己编译 SFML:
获取CMake。前往 SFML 下载页面底部获取 2.4.2 的源代码。关注this guide on SFML's GitHub repo。或者,您可以使用the guide on SFML's page,但它适用于旧版本。它可能会回答第一个指南遗漏的一些问题。
那些 CMake 已生成 makefile,您正在构建 SFML。
祝你好运!

【讨论】:

    【解决方案2】:

    我遇到这个问题很久了,所以我只是想帮助遇到同样问题的人。我有一个 Windows 10 仅供参考和 MinGW-w64 8.1.0(如果它不起作用,请尝试使用 32 位 mingw)

    用于调试模式(调试是指您仍在处理游戏并希望在运行时打开命令提示符)

    (首先通过“cd”确保您在正确的目录中)

    g++ -c (file_name).cpp -o (file_name).o -I(path_to)SFML-64-bit/include -g -m64 -Wall &&
     g++ (file_name).o -o (game_name).exe -L(path_to)SFML-64-bit/lib -lsfml-graphics -lsfml-window -lsfml-system
    

    上面的代码放在命令中时,如果它们都在同一个目录中,它将为你编译所有东西,所以请确保你留意这一点

    现在是发布模式(如果你不想显示命令提示符)

    g++ -c (file_name).cpp -o (file_name).o -I(path_to)SFML-64-bit/include -O3 -m64 &&
     g++ (file_name).o -o (game_name).exe -L(path_to)SFML-64-bit/lib -lsfml-graphics lsfml-window -lsfml-system -mwindows
    

    注意到我添加的只是 -mwindows 和 -O3 以及删除 -g 和 -Wall ,因为我们不会使用命令提示符

    确保转到 SFML/bin 并获取所有 .dll 并将其放入同一目录中,您的 .exe 对不起 xd

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 2017-03-29
      • 2016-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多