我正在尝试编译SFML示例程序:
#define SFML_STATIC
#include <iostream>
#include <SFML-2.5.1\\include\\SFML\\Window.hpp>
using namespace std;
namespace SF = sf;
int main()
{
SF::Window window {SF::VideoMode{600, 600}, "Test1"};
while(window.isOpen())
{
SF::Event event;
while(window.pollEvent(event))
{
if(event.type == SF::Event::Closed)
{
window.close();
}
}
}
return 0;
}
字符串
首先,我编译
g++ -c main.cpp -IH:\CPPLIBS\SFML-2.5.1\include -DSFML_STATIC
型
然后我连接到
g++ main.o -o main -LH:\CPPLIBS\SFML-2.5.1\lib -lsfml-graphics-s -lsfml-window-s -lsfml-system-s -lopengl32 -lwinmm -lgdi32
型
但在连接阶段,我得到了错误
H:\CPPLIBS\SFML-2.5.1\lib/libsfml-system-s.a(Err.cpp.obj):Err.cpp:(.rdata+0x80):
undefined reference to `std::basic_streambuf<char, std::char_traits<char>>::seekpos(std::fpos<int>, std::_Ios_Openmode)'
型
我在网上到处寻找解决方案,并试图自己修复它,改变库的顺序,用一个命令编译和链接并改变参数,但我真的不能修复它,似乎没有人遇到过这个确切的问题。对于编译,我使用的是,正如你所看到的,WinLibs Mingw附带的g++编译器。
2条答案
按热度按时间yshpjwxd1#
GCC 12中的默认C++方言是
-std=gnu++17
。字符串
如果没有帮助,请参阅我对这个问题的评论。
如果你觉得你的GCC版本不能与预编译的SFML库一起工作,不要犹豫,build SFML yourself,它并不复杂。
x6492ojm2#
我在使用Clang + SFML for Windows时遇到了同样的问题。解决方案是使用以下命令重建静态SFML库:
字符串