有一个带有 SFML 的简单 C++ 脚本。当我尝试编译它时,编译器出现一些错误。 请注意,代码编辑器中不会显示与脚本相关的错误。
脚本:
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(shape);
window.display();
}
return 0;
}
命令:
$ g++ -c src\main.cpp -I"C:\librairies\SFML-2.6.1\include"
$ g++ main.o -o sfml-app -L"C:\librairies\SFML-2.6.1\lib" -lsfml-graphics -lsfml-window -lsfml-system
当我运行第一个命令时,我没有收到任何错误,一切顺利。但是当我运行第二个时,出现这个错误:
C:/Program Files/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/librairies/SFML-2.6.1/lib/libsfml-graphics.a when searching for -lsfml-graphics
[...]
C:/Program Files/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/librairies/SFML-2.6.1/lib/libsfml-system.a when searching for -lsfml-system
collect2.exe: error: ld returned 1 exit status
我已经尝试更改SFML的目录,但问题仍然出现。
您下载了与您的编译器不兼容的 SFML 不兼容的二进制文件,在 Windows 上您可以轻松地从源代码编译 SFML,因为它没有依赖项,使用与构建项目相同的编译器编译 SFML 将避免此问题,步骤如下。
g++
和 cmake
都在您的 PATH
环境变量中(通常是安装过程中的复选框),您可以通过在 cmd 中键入 g++ --version
和 cmake --version
进行验证。cmd
并输入mkdir build
cd build
cmake .. -G"MinGW Makefiles"
cmake --build .
与您的编译器兼容的新二进制文件现在应该位于您可以在项目中使用的
build/libs
文件夹中。