В настоящее время я пытаюсь создать программу, которая использует openCV для съемки с веб-камеры и выполнения графических операций для поиска области в openCV, а затем передачи ее в программу.c, которая просто отправляет информацию на сервер через программирование портов.
моя проблема в том, что даже при том, что я создал файл.h для функций, которые я использовал в коде.cpp openCV, и включил его в мой.c, там все еще ошибка с сообщением error: expected ') before '& token
вот мой simpleIS.h:
int captureimg();
int backgroundsub();
void noisesuppression(Mat &ptr);
void simplegetarea(Mat &img);
extern int area1,area2,area3,area4;
есть идеи?
Вам придется обернуть функции, которые вам нужны в других функциях C++, и у этих функций есть внешняя связь "C". Вам также понадобятся структуры данных C, в которых хранятся материалы, необходимые для создания классов C++. Вызовите функции обертки из C.
Например, если у вас есть функция cpp, например:
int im_a_cxx_function(int , some_type, another_type &);
Вы создаете функцию обертки:
extern "C" int im_a_cxx_wrapper_function(int i,
struct some_C_type *st_C,
struct another_C_type *at_C)
{
some_type st;
another_type at;
set_some_type(&st, st_C);
set_another_type(&at, at_C);
return im_a_cxx_function(i, st, at);
}
Затем в заголовке для ваших функций обертки:
#ifdef __cplusplus
extern "C" {
#endif
int im_a_cxx_wrapper_function(int i, struct some_C_type *st_C,
struct another_C_type *at_C);
#ifdef __cplusplus
}
#endif
Затем вы включаете заголовок для своих функций-оболочек в ваш.c файл и обычно вызываете функцию обертки. Главное, что вы не можете вызывать функцию без extern "C" из C из-за изменения имени, и поскольку вы не контролируете библиотечные функции, вы должны их обернуть. Вы также можете использовать непрозрачные указатели для типов C++, но поскольку вы не можете использовать конструкторы, вам, как правило, придется как минимум писать фабричные и удаленные функции для них.
extern "C"
для получения дополнительной информации