Я пытаюсь использовать SIFT-библиотеку Роба Гесса в моем проекте C ++.Я просмотрел (код) других реализаций SIFT, но эта, по-видимому, наиболее разделена по фазе, как и оригинальная статья Лоу, и также использует OpenCV, с которым я знаком, поэтому я выбрал эту.
К сожалениюУ меня были только проблемы, так как я пытался использовать его в C ++.Библиотека изначально написана на C с OpenCV.
Я пытался скомпилировать свой код как с окружением include-s библиотеки C, так и без него с помощью extern
, но ни одна из них не работает.Я думаю, что диагностировал проблемы в обоих случаях, но я не знаю, как их решить, и я был бы очень признателен за любую помощь.
Проблемы (или, по крайней мере, как мне кажется, проблемы):
без h extern
: не работает из-за искажения имен в C ++ (я проверил, и, конечно, все имена функций оформлены)
с extern
: не работает, потому что OpenCV может определять погоду, скомпилированную для C или C ++.Нет проблем со связью ни с одной из функций библиотеки SIFT, но теперь OpenCV включает заголовки C ++, и, поскольку в основной программе он в конечном итоге включен в блок extern
, я получаю (буквально сотни) ошибок, подобных этим:
/usr/local/include/opencv2/core/mat.hpp:2361: error: template with C linkage
Я пытался сделать эту работу последние пару дней, поэтому, если кто-то пытался работать с той же библиотекой SIFT в C ++ или испытываланалогичные проблемы с другой библиотекой, помощь будет наиболее ценной.