Mix CPP OpenCV / Основная программа C

0

Я получил основной проект, основанный на C, и мне нужно включить функцию CPP (использующую OpenCV). Я использовал файл Cmake для этого, но это не работает, когда я добавляю файл cpp.

Здесь мой Makefile

    cmake_minimum_required (VERSION 2.8.9)

project(tictactoe)

### Requierements

    find_package(OpenCV REQUIRED )
    include_directories(../Sources)
include_directories(${OpenCV_INCLUDE_DIRS})
    include(CheckIncludeFiles)
include(CheckIncludeFileCXX)
### Subdirectories where the sources are

    FILE(GLOB MyCSources "../Sources/*.c")
ADD_LIBRARY(detect_tag ../Sources/detect_tag.cpp ../Sources/detect_tag.hpp)
ADD_EXECUTABLE(tictactoe  ${MyCSources} ../Sources/detect_tag.cpp ../Sources/detect_tag.hpp)

TARGET_LINK_LIBRARIES(tictactoe rt  ${CMAKE_THREAD_LIBS_INIT} ${OpenCV_LIBS})
  • 0
    Не ваша главная проблема, но я уверен, что файлы *.hpp не нужно указывать в источниках: они не скомпилированы, а если они не включены, то они не используются ... так что cmake не не нужно знать о них.
Теги:
cmake
compilation

1 ответ

0

Хорошо, я решил свою проблему с помощью обертки: я создал заголовочный файл, такой как wrapper.h и wrapper.cpp.

в wrapper.hi получил:

extern "C" my_function_through_wrapper();

в wrapper.ci получил:

#include file_where_my_function_if.h
extern "c" { 

my_function_through_wrapper(){
         my_function();
}

}

И это! Действительно, я создал интерфейс между реальным CPP и C-кодом. С extern C мой компилятор знает, как легко скомпилировать файл-обертку, чтобы мой код C мог ссылаться на него. Затем через обертку CPP можно связать с другим кодом CPP, используя все включенные librairies в CPP. Решено!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню