Undefinierter Verweis auf Fehler beim Linken mit CMake

1. Problemhintergrund

Erstellte zuvor ein neues Projekt. Die Projektdatei wird verteilt als

1. src/MROR.cpp

2.include/MROR.h

3.main.cpp

Undefinierter Verweis toxx erscheint, wenn cmake ausgeführt wird, was darauf hinweist, dass der Funktionsaufruf des Klassenmitglieds in der Hauptfunktion keine Deklaration hat, aber alle Deklarationen in MROR.h geschrieben wurden

Zweitens, die Lösung

Ich habe viele Online-Informationen überprüft

Lösung

1) Möglicherweise ist die MROR.cpp-Datei nicht mit dem Projekt verknüpft und die cpp-Datei enthält die pcl-Bibliothek, die möglicherweise nicht kompiliert und verknüpft wird

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)

Das Ergebnis ist immer noch ein Fehler

2) Die Funktionsvorlage kann im Projekt verwendet werden, was dazu führt, dass cmake keinen Fehler meldet.

Führen Sie die cpp-Implementierungsdatei mit der h-Datei in hpp zusammen.

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) 

Das Ergebnis wurde erfolgreich gelöst

おすすめ

転載: blog.csdn.net/qq_42373896/article/details/129989944
おすすめ