Добавление dll в CMake - PullRequest
       9

Добавление dll в CMake

0 голосов
/ 10 сентября 2018

Я пытаюсь добавить в мой проект CLion внешнюю библиотеку OpenAlpr с файлами alpr.h и openalpr.lib / openalpr.dll. Я поместил заголовочный файл в каталог моего проекта и включил его в исходный код, но не знаю, как добавить файлы .dll или .lib. Я смотрел на другие ответы, такие как это и это , но они слишком запутывают меня, и я не мог заставить свою работу работать; при попытке запуска выводятся следующие ошибки:

undefined reference to `alpr::Alpr::Alpr(std::string, std::string, std::string)'
.text+0x9f): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `alpr::Alpr::Alpr(std::string, std::string, st
 undefined reference to `alpr::Alpr::getVersion()'
(.text+0xf3): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `alpr::Alpr::getVersion()'
undefined reference to `alpr::Alpr::~Alpr()'
.text+0x123): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `alpr::Alpr::~Alpr()'
undefined reference to `alpr::Alpr::~Alpr()'
.text+0x1af): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `alpr::Alpr::~Alpr()'
collect2: error: ld returned 1 exit status
make[3]: *** [CMakeFiles/AlprCpp.dir/build.make:84: AlprCpp.exe] Error 1
make[2]: *** [CMakeFiles/Makefile2:73: CMakeFiles/AlprCpp.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:85: CMakeFiles/AlprCpp.dir/rule] Error 2
make: *** [Makefile:118: AlprCpp] Error 2

Это содержимое моего файла CMake:

cmake_minimum_required(VERSION 3.12)
project(AlprCpp)

set(CMAKE_CXX_STANDARD 14)

add_executable(AlprCpp main.cpp alpr.h)
link_directories(C:\\Projects\\AlprCpp)
find_library(AlprCpp openalpr.lib)

Заранее спасибо.

1 Ответ

0 голосов
/ 10 сентября 2018

Не копируйте файлы заголовков ваших библиотек в ваш проект.

В какой-то момент вам нужно будет пройти трудные уроки и научиться использовать find_package. Если вы просто хотите, чтобы все работало быстро, вот один упрощенный способ (предполагая имена файлов Alpr.lib Alpr.h).

cmake_minimum_required(VERSION 3.12)
project(AlprCpp)

set(ALPR_LIBRARY "" CACHE FILEPATH  "Full path to Alpr.lib")
set(ALPR_INCLUDE_PATH "" CACHE PATH "Directory containing Alpr.h")
include_directories(${ALPR_INCLUDE_PATH})

add_executable(AlprCpp main.cpp)
target_link_libraries(AlprCpp ${ALPR_LIBRARY })

Что касается файлов dll (при условии Windows), либо установите переменную среды PATH, либо скопируйте DLL в каталог, где находится .exe.

...