记录CLion使用MinGW,sfml出现undefined reference问题

出现此问题的环境:Clion、MinGW、vcpkg

我的CMakeLists 文件如下:

cmake_minimum_required(VERSION 3.27)
project(stu)

set(CMAKE_CXX_STANDARD 17)
# 查找 SFML 库
find_package(SFML 2.6.1 COMPONENTS graphics window system REQUIRED)

# 添加可执行文件
add_executable(sfml src/sfml/test.cpp )

# 链接 SFML 动态库
target_link_libraries(sfml PRIVATE
        sfml-graphics
        sfml-window
        sfml-system
)

代码如下:

#include <SFML/Graphics.hpp>

int main() {
    sf::RenderWindow window(sf::VideoMode(800, 600), "SFML Window");

    while (window.isOpen()) {
        sf::Event event;
        while (window.pollEvent(event)) {
            if (event.type == sf::Event::Closed) {
                window.close();
            }
        }

        window.clear(sf::Color::Black);

        sf::CircleShape circle(50.0f);
        circle.setFillColor(sf::Color::Red);
        circle.setPosition(375.0f, 275.0f);
        window.draw(circle);

        window.display();
    }

    return 0;
}

以上代码运行会出现以下报错:

D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: CMakeFiles\sfml.dir/objects.a(test.cpp.obj): in function `main':
D:/pri/Project/C++/Cpp_stu/src/sfml/test.cpp:8: undefined reference to `__imp__ZN2sf6StringC1EPKcRKSt6locale'
D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: D:/pri/Project/C++/Cpp_stu/src/sfml/test.cpp:8: undefined reference to `__imp__ZN2sf9VideoModeC1Ejjj'
D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: D:/pri/Project/C++/Cpp_stu/src/sfml/test.cpp:8: undefined reference to `__imp__ZN2sf12RenderWindowC1ENS_9VideoModeERKNS_6StringEjRKNS_15ContextSettingsE'
D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: D:/pri/Project/C++/Cpp_stu/src/sfml/test.cpp:14: undefined reference to `__imp__ZN2sf6Window5closeEv'
D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: D:/pri/Project/C++/Cpp_stu/src/sfml/test.cpp:12: undefined reference to `__imp__ZN2sf10WindowBase9pollEventERNS_5EventE'
D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: D:/pri/Project/C++/Cpp_stu/src/sfml/test.cpp:18: undefined reference to `__imp__ZN2sf5Color5BlackE'
D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: D:/pri/Project/C++/Cpp_stu/src/sfml/test.cpp:18: undefined reference to `__imp__ZN2sf12RenderTarget5clearERKNS_5ColorE'
D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: D:/pri/Project/C++/Cpp_stu/src/sfml/test.cpp:20: undefined reference to `__imp__ZN2sf11CircleShapeC1Efy'
D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: D:/pri/Project/C++/Cpp_stu/src/sfml/test.cpp:21: undefined reference to `__imp__ZN2sf5Color3RedE'
D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: D:/pri/Project/C++/Cpp_stu/src/sfml/test.cpp:21: undefined reference to `__imp__ZN2sf5Shape12setFillColorERKNS_5ColorE'
D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: D:/pri/Project/C++/Cpp_stu/src/sfml/test.cpp:22: undefined reference to `__imp__ZN2sf13Transformable11setPositionEff'
D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: D:/pri/Project/C++/Cpp_stu/src/sfml/test.cpp:23: undefined reference to `__imp__ZN2sf12RenderStates7DefaultE'
D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: D:/pri/Project/C++/Cpp_stu/src/sfml/test.cpp:23: undefined reference to `__imp__ZN2sf12RenderTarget4drawERKNS_8DrawableERKNS_12RenderStatesE'
D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: D:/pri/Project/C++/Cpp_stu/src/sfml/test.cpp:25: undefined reference to `__imp__ZN2sf6Window7displayEv'
D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: D:/pri/Project/C++/Cpp_stu/src/sfml/test.cpp:10: undefined reference to `__imp__ZNK2sf10WindowBase6isOpenEv'
D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: D:/pri/Project/C++/Cpp_stu/src/sfml/test.cpp:29: undefined reference to `__imp__ZN2sf12RenderWindowD1Ev'
D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: D:/pri/Project/C++/Cpp_stu/src/sfml/test.cpp:29: undefined reference to `__imp__ZN2sf12RenderWindowD1Ev'
D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: CMakeFiles\sfml.dir/objects.a(test.cpp.obj): in function `sf::CircleShape::~CircleShape()':
D:/pri/Project/C++/Cpp_stu/cmake-build-mingw/vcpkg_installed/x64-windows/include/SFML/Graphics/CircleShape.hpp:41: undefined reference to `__imp__ZTVN2sf11CircleShapeE'
D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: D:/pri/Project/C++/Cpp_stu/cmake-build-mingw/vcpkg_installed/x64-windows/include/SFML/Graphics/CircleShape.hpp:41: undefined reference to `__imp__ZTVN2sf11CircleShapeE'
D:\Program Files\JetBrains\CLion Nova\bin\mingw\bin/ld.exe: D:/pri/Project/C++/Cpp_stu/cmake-build-mingw/vcpkg_installed/x64-windows/include/SFML/Graphics/CircleShape.hpp:41: undefined reference to `__imp__ZN2sf5ShapeD2Ev'
collect2.exe: error: ld returned 1 exit status
mingw32-make[3]: *** [CMakeFiles\sfml.dir\build.make:102: sfml.exe] Error 1
mingw32-make[2]: *** [CMakeFiles\Makefile2:446: CMakeFiles/sfml.dir/all] Error 2
mingw32-make[1]: *** [CMakeFiles\Makefile2:453: CMakeFiles/sfml.dir/rule] Error 2
mingw32-make: *** [Makefile:292: sfml] Error 2

经尝试后发现生成器使用MinGW Makefiles或者Ninja会出现此问题,更换成NMake Makefiles则可以正常运行代码

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-Juan-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值