Référence indéfinie à l'erreur lors de la liaison avec CMake

1. Contexte du problème

Créé un nouveau projet auparavant. Le fichier de projet est distribué en tant que

1. src/MROR.cpp

2.include/MROR.h

3.main.cpp

Une référence indéfinie toxx apparaît lorsque cmake est exécuté, indiquant que l'appel de la fonction membre de la classe dans la fonction principale n'a pas de déclaration, mais que toutes les déclarations ont été écrites dans MROR.h

Deux, la solution

J'ai vérifié beaucoup d'informations en ligne

Solution

1) Peut-être que le fichier MROR.cpp n'est pas lié au projet et que le fichier cpp contient la bibliothèque pcl, qui peut ne pas être compilée et liée

include_directories(${PCL_INCLUDE_DIRS} include)

add_library(${PROJECT_NAME}_core src/MROR.cpp)	

target_link_libraries(${PROJECT_NAME}_core ${PCL_LIBRARIES})

add_executable(MROR_exe main.cpp src/MROR.cpp)

target_link_libraries(MROR ${PCL_LIBRARIES} ${PROJECT_NAME}_core)

Le résultat est toujours une erreur

2) Le modèle de fonction peut être utilisé dans le projet, ce qui empêche cmake de signaler une erreur.

Fusionnez le fichier d'implémentation cpp avec le fichier h dans hpp.

include_directories(
			${PCL_LIBRARIES}
			include)

find_package(PCL 1.8 REQUIRED)

#生成链接库
add_library(${PROJECT_NAME}_core include/MROR.hpp)	

#生成可执行文件
add_executable(MROR_exe main.cpp)

set_target_properties(${PROJECT_NAME}_core PROPERTIES LINKER_LANGUAGE CXX)

target_link_libraries(MROR_exe ${PCL_LIBRARIES} ${PROJECT_NAME}_core) 

Le résultat a été résolu avec succès

Je suppose que tu aimes

Origine blog.csdn.net/qq_42373896/article/details/129989944
conseillé
Classement