Смешайте Objective-C и C ++ и OpenCV - PullRequest
1 голос
/ 25 мая 2011

Я кодирую приложение для iPhone и использую OpenCV для обработки изображений.До сих пор я использовал его только в простом C, но теперь мне нужно использовать C ++ для создания некоторого базового OCR.

Сначала я создал файл .h / .cpp, и, похоже, он хорошо компилируется.Но мне нужно смешать это с некоторым Objective-C, чтобы открыть изображения и так далее.Затем я переименовал файл в .mm вместо .cpp, но он не скомпилируется!

Я получаю эту ошибку: «Выражения-выражения разрешены только внутри функций» в строке OpenCV core.hpp 432

Строка 432 - это строка:

typedef Matx<_Tp, MIN(m, n), 1> diag_type;

Есть идеи, почему это может произойти?

Ответы [ 4 ]

4 голосов
/ 25 мая 2011

У меня была такая же проблема.Я импортировал заголовок Open-CV перед заголовками UIKit.Убедитесь, что вы делаете это в файле pch.Проблема в том, что некоторые макросы определены в UIKit и OpenCV.

Источник: http://computer -vision-talks.com / 2011/01 / using-opencv-in-target-c-code /

Маунил

1 голос
/ 09 декабря 2011

Я на самом деле полагался на частную платформу (и пример проекта), предоставленную этим парнем: http://aptogo.co.uk/2011/09/opencv-framework-for-ios/

Мне удалось использовать тот же подход, что и в примере, для использования в моем Mac-приложении Objective-C. А именно, использование директивы import в файле .PCH, а также использование .mm для файлов Objective-C, использующих любой код / ​​классы OpenCV C ++.

0 голосов
/ 20 февраля 2013

заголовки OpenCV должны быть включены перед UIKit.h и Foundation.h, потому что OpenCV определяет макрос MIN, который конфликтует с функцией MIN, определенной средами Apple. Если вы включите заголовки OpenCV после UIKit.h и Foundation.h, вы получите ошибки компиляции, такие как «Ошибка LLVM GCC 4.2: выражения-выражения допускаются только внутри функций». Включение заголовков OpenCV в первую очередь и окружение #import условным тестом __cplusplus позволяет избежать этой проблемы и означает, что вы все еще можете использовать обычный Objective-C для файлов .m в вашем проекте, которые не вызывают API-интерфейсы OpenCV.

http://aptogo.co.uk/2011/09/opencv-framework-for-ios/

0 голосов
/ 30 сентября 2012

Еще одна (не связанная?) Вещь, о которой стоит упомянуть, по крайней мере, в xcode 4.5, это то, что вам нужно изменить стандартную библиотеку C ++ на «libstdc ++» в ваших целевых настройках, чтобы компилировать openCV.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...