Недавно я пытался написать плагин для ParaView и столкнулся с проблемой при попытке связать внешние библиотеки. Прежде всего я должен сказать, что компиляция идет хорошо, но я получаю ошибку во время выполнения, говоря страшные слова: «ошибка поиска символа .. неопределенный символ».
При использовании ldd для файла, который я загружаю в ParaView, ни один из файлов библиотеки vxl, необходимых для этого плагина, не отображается. У ParaView есть свой странный способ определения плагинов в файле CmakeLists.txt, и поэтому мне так сложно найти информацию о том, как правильно связать эту библиотеку.
Мой CMakeLists.txt теперь выглядит следующим образом:
cmake_minimum_required(VERSION 2.8)
IF (ParaView_SOURCE_DIR)
INCLUDE_DIRECTORIES(
${VTK_INCLUDE_DIRS}
)
ELSE (ParaView_SOURCE_DIR)
FIND_PACKAGE(ParaView REQUIRED)
INCLUDE(${PARAVIEW_USE_FILE})
ENDIF (ParaView_SOURCE_DIR)
FIND_PACKAGE(VXL)
IF(VXL_FOUND)
INCLUDE(${VXL_CMAKE_DIR}/UseVXL.cmake)
ENDIF(VXL_FOUND)
INCLUDE_DIRECTORIES(${VXLCORE_INCLUDE_DIR})
ADD_PARAVIEW_PLUGIN(Main "0.0"SERVER_MANAGER_XML Main.xml
SERVER_MANAGER_SOURCES Main.cxx LSModelFit.cxx
)
Это не очевидно, но вы можете просто добавить библиотеку в Main
цель, что add_paraview_plugin
определяет с
target_link_libraries(Main vxl)
или как там у библиотеки.
Других решений пока нет …