SFML库的安装
sudo apt-get sudo apt-get install libsfml-dev
ubuntu会将库文件安装到/usr/include目录下
编译报错
CMakeFiles/04_Snake.dir/main.cpp.o:在函数‘main’中:
main.cpp:42:对‘sf::String::String(char const*, std::locale const&)’未定义的引用
main.cpp:42:对‘sf::VideoMode::VideoMode(unsigned int, unsigned int, unsigned int)’未定义的引用
main.cpp:42:对‘sf::RenderWindow::RenderWindow(sf::VideoMode, sf::String const&, unsigned int, sf::ContextSettings const&)’未定义的引用
main.cpp:44:对‘sf::Texture::Texture()’未定义的引用
main.cpp:44:对‘sf::Texture::Texture()’未定义的引用
这是因为默认CMakeLists文件没有链接关系导致的c++编译过程的依赖库连接错误。
手动添加CMakeLists文件如下
cmake_minimum_required(VERSION 3.19)
project(04_Snake)
set(CMAKE_CXX_STANDARD 14)
set(EXECUTABLE_NAME "04_Snake")
add_executable(${EXECUTABLE_NAME} main.cpp)
target_link_libraries(${EXECUTABLE_NAME} sfml-graphics sfml-window sfml-system)
测试编译以下代码,成功
#include <SFML/Graphics.hpp>
using namespace sf;
int main()
{
sf::RenderWindow window(VideoMode(480, 320), "Snake Game!");
return 0;
}
在Ubuntu上安装SFML库并尝试编译项目时遇到未定义引用的错误。问题出在CMakeLists.txt文件未正确设置链接库。通过手动编辑CMakeLists.txt,添加`target_link_libraries`指令链接sfml所需库,解决了编译问题。最终成功编译并运行了包含sf::RenderWindow的基本示例代码。
867

被折叠的 条评论
为什么被折叠?



