Maison >développement back-end >C++ >Comment résoudre l'erreur de référence non définie lors de l'utilisation de SDL2 et SDL_image avec CMake ?

Comment résoudre l'erreur de référence non définie lors de l'utilisation de SDL2 et SDL_image avec CMake ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-05 19:46:02829parcourir

How to Solve Undefined Reference Error When Using SDL2 and SDL_image with CMake?

Comment utiliser SDL2 et SDL_image avec CMake (erreurs résolues)

Dans ce guide, nous fournirons une solution au problème rencontré lorsque vous essayez d'utiliser SDL2 et SDL_image avec CMake.

Problème d'origine :

Lors de la tentative de compilation d'un programme C à l'aide de SDL2 et SDL_image avec CMake, une référence non définie à IMG_LoadTexture a été rencontré.

Solution améliorée :

Pour résoudre ce problème, nous pouvons modifier le fichier CMakeLists.txt comme suit :

<code class="cmake">project(shooter-cmake2)

cmake_minimum_required(VERSION 2.8)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")

add_executable(${PROJECT_NAME} src/test.cpp)

INCLUDE(FindPkgConfig)

PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2)
PKG_SEARCH_MODULE(SDL2IMAGE REQUIRED SDL2_image>=2.0.0)

INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIRS} ${SDL2IMAGE_INCLUDE_DIRS})
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${SDL2_LIBRARIES} ${SDL2IMAGE_LIBRARIES})</code>

Explication :

  • Nous utilisons FindPkgConfig pour localiser et utiliser les bibliothèques système appropriées.
  • PKG_SEARCH_MODULE est utilisé pour rechercher SDL2 et SDL2_image et configurer leurs chemins d'inclusion et leurs bibliothèques.
  • Remarquez que la valeur Name dans /usr/lib/x86_64-linux-gnu/pkgconfig/SDL2_image.pc correspond au troisième paramètre de PKG_SEARCH_MODULE pour cette bibliothèque.

Mise en œuvre de ces modifications devrait résoudre le problème de liaison et permettre au programme d'utiliser SDL2 et SDL_image avec succès.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn