Bonjour à tous.
Dans le cadre d'un projet que je réalise pour les cours, je suis amené à utiliser l'interface C++ SWI-Prolog. J'ai donc utilisé l'installateur fourni par le site pour installer Prolog ainsi que les librairies sur mon ordinateur. J'utilise l'IDE Clion car tout le monde ne travail pas sous windows pour le projet, et donc la chaîne de compilation MinGW. Voici mon CmakeList.txt :
J'ai donc bien indiqué les différents chemins vers les dossiers contenant les librairies ainsi que les headers. J'ai également ajouté dans ma variable d'environnement %PATH% le chemin vers le dossier bin/ qui contient toutes les DLLs. Cependant lors de la compilation je me retrouve avec l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 cmake_minimum_required(VERSION 3.7) project(Split) set(CMAKE_CXX_STANDARD 11) # Compilation de SFML link_directories(./lib/SFML/lib/) include_directories(./lib/SFML/include/) add_subdirectory(./lib/SFML/) # Ajout de la localisation de SWI-Prolog link_directories(/Program\ Files/swipl/lib) include_directories(/Program\ Files/swipl/include) # Changement du dossier de sortie set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/) set(SOURCE_FILES main.cpp Core/Window.cpp Core/Window.h) add_executable(Split ${SOURCE_FILES}) target_link_libraries(Split sfml-graphics sfml-window sfml-system swipl) # Copie des dll dans le dossier de l'exécutable généré file(COPY "./cmake-build-debug/lib/SFML/lib/" DESTINATION "${CMAKE_SOURCE_DIR}/bin/")
Je tiens à préciser que ni l'interface C ni l'interface C++ ne se link à la fin de la compilation...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 [ 23%] Built target sfml-system [ 53%] Built target sfml-window [ 97%] Built target sfml-graphics [ 98%] Linking CXX executable ..\bin\Split.exe CMakeFiles\Split.dir/objects.a(main.cpp.obj): In function `main': C:/Users/user/CLionProjects/Split/main.cpp:35: undefined reference to `PL_initialise' C:/Users/user/CLionProjects/Split/main.cpp:38: undefined reference to `PL_halt' C:/Users/user/CLionProjects/Split/main.cpp:43: undefined reference to `PL_halt' collect2.exe: error: ld returned 1 exit status mingw32-make.exe[3]: *** [../bin/Split.exe] Error 1 CMakeFiles\Split.dir\build.make:128: recipe for target '../bin/Split.exe' failed mingw32-make.exe[2]: *** [CMakeFiles/Split.dir/all] Error 2 CMakeFiles\Makefile2:68: recipe for target 'CMakeFiles/Split.dir/all' failed mingw32-make.exe[1]: *** [CMakeFiles/Split.dir/rule] Error 2 CMakeFiles\Makefile2:80: recipe for target 'CMakeFiles/Split.dir/rule' failed Makefile:161: recipe for target 'Split' failed mingw32-make.exe: *** [Split] Error 2
J'ai fouillé sur internet mais je n'ai pas trouvé de solution pertinente à mon problème, je m'en remet donc à vous !
En vous remerciant d'avance pour vos réponses
Partager