php — Почему объекты, такие как SurfFeatureDetector в C ++, вызывают проблемы при переносе в модуль C с использованием extern & quot; C & quot ;?

Я написал небольшую программу на C ++, и я просто пытаюсь завершить ее на C, так как работаю над расширением PHP на C. В общем, все выглядит хорошо. Основы работы, я могу написать простую программу на C ++ и использовать extern "C" который работает без проблем.

Но я также использую OpenCV и, кажется, сталкиваюсь с проблемами при объявлении таких объектов, как SurfFeatureDetector,

Вот моя отправная точка Hello World C:

#ifdef HAVE_CONFIG_H
#include "config.h"#endif
#include "php.h"#include "php_framework.h"#include "cvlink.h"
static function_entry framework_functions[] = {
PHP_FE(test, NULL)
{NULL, NULL, NULL}
};

zend_module_entry framework_module_entry = {
#if ZEND_MODULE_API_NO >= 20010901
STANDARD_MODULE_HEADER,
#endif
PHP_FRAMEWORK_EXTNAME,
framework_functions,
NULL,
NULL,
NULL,
NULL,
NULL,
#if ZEND_MODULE_API_NO >= 20010901
PHP_FRAMEWORK_VERSION,
#endif
STANDARD_MODULE_PROPERTIES
};

#ifdef COMPILE_DL_FRAMEWORK
ZEND_GET_MODULE(framework)
#endif

PHP_FUNCTION(test)
{
RETURN_STRING("Hello World", 1);
}

Так вот я на самом деле тянет cvlink.h вверху, и исходный файл для этого заголовка выглядит так:

#include "cvlink.h"#include "opencv2/highgui/highgui.hpp"#include "opencv2/calib3d/calib3d.hpp"
using namespace cv;

extern "C" int process_two_images(const char* first_img_path, const char* second_img_path)
{
Mat object_1 = imread(first_img_path, CV_LOAD_IMAGE_GRAYSCALE);
Mat object_2 = imread(second_img_path, CV_LOAD_IMAGE_GRAYSCALE);

return 0;
}

Это все работает нормально, так что если я должен был позвонить process_two_images в моем файле C это будет работать нормально. Но следующая строка после Mat object_1… строки выглядят так:

SurfFeatureDetector detector(500);

Тем не менее, с точки зрения компиляции все в порядке. Но когда я звоню test Функция PHP, которую я здесь создал, выдает ошибку необъявленной функции.

Странный. Возможно, что-то действительно очевидное, что я скучаю, но я не знаю что.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]