2016-08-25 2 views
0

Я хочу спросить, возможно ли работать с исходным кодом C++ в библиотеке opencv, не используя скомпилированные библиотеки, такие как .lib и .dll., работающий с исходным кодом библиотеки C++ (opencv)

Я имею в виду, можно ли работать только с файлами заголовков и .cpp-файлами из библиотеки?

Я хочу создать базовый класс C++ с функцией, которая принимает изображение и выполняет ряд операций, связанных с opencv, но мне нужна свобода компиляции кода для ряда платформ как родной библиотеки (и я думаю что использование .lib или .dll запретит компиляцию для нескольких платформ). Я предполагаю, что это возможно, используя только исходный код C++. Но, используя визуальную студию и добавляя дополнительные каталоги Include, я получаю ошибки LNK2019, вероятно, «функция или переменная объявлена, но не определена», хотя я включаю «правильные» каталоги с файлами .hpp и .cpp, но, вероятно, я что-то пропустил ,

+4

Вы можете скачать исходный код и собрать библиотеки для своих желаемых платформ самостоятельно, а затем включить их одинаково и перестроить свой проект – slawekwin

ответ

0

Это типичный случай для собственного кода. Что вам нужно сделать, это загрузить исходный код (я думаю, вы уже это сделали) и создать его отдельно для платформы (ей), в которой вы нуждаетесь.

В ваш проект включены библиотеки результатов (либо статические lib, либо динамические файлы dll), как вы предварительно скомпилировали их. Таким образом, файлы библиотеки хранятся отдельно и строятся только один раз, а не на каждой сборке вашего проекта.

В Visual Studio вы можете установить путь включения отдельно для каждой конфигурации, чтобы вы могли настроить проект на использование библиотеки, построенной для текущей архитектуры.

0

Добавляя к тому, что @slawekwin написал в своем комментарии выше, создание и ссылки на ваши целевые платформы также могут быть автоматизированы как часть вашей системы сборки .

Если вы создали OpenCV раньше, вы должны столкнуться с CMake. С CMake можно настроить external projects (EP), который будет скачать исходный код стороннего проекта, а затем настроить, построить, и установить его. Это пример для OpenCV скопирована из github repository:

ExternalProject_Add(opencv 
    GIT_REPOSITORY ${git_protocol}://code.opencv.org/opencv.git 
    GIT_TAG 2.3.1 
    SOURCE_DIR opencv 
    BINARY_DIR opencv-build 
    UPDATE_COMMAND "" 
    PATCH_COMMAND "" 
    CMAKE_GENERATOR ${gen} 
    CMAKE_ARGS 
    ${ep_common_args} 
    -DBUILD_DOCS:BOOL=OFF 
    -DBUILD_EXAMPLES:BOOL=OFF 
    -DBUILD_NEW_PYTHON_SUPPORT:BOOL=OFF 
    -DBUILD_PACKAGE:BOOL=OFF 
    -DBUILD_SHARED_LIBS:BOOL=ON 
    -DBUILD_TESTS:BOOL=OFF 
# -DCMAKE_BUILD_TYPE:STRING=Release 
    -DWITH_FFMPEG:BOOL=OFF 
    -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL 
) 

set(OPENCV_ROOT_DIR ${CMAKE_BINARY_DIR}/INSTALL) 
set(OPENCV_DIR ${CMAKE_BINARY_DIR}/INSTALL) 

Это также может быть интересно взглянуть на кросс-платформенный пакет менеджер для C++ под названием hunter, который основан на CMake EP.

Смежные вопросы