Предупреждение OpenCV: «функция скомпилирована как нативная» - PullRequest
1 голос
/ 15 февраля 2012

Я создал проект Windows Form, используя Visual Studio 2010, и портировал некоторые из моих кодов из старого консольного проекта, в котором используется OpenCV. При компиляции я получил следующее сообщение:

opencv\include\opencv\cxoperations.hpp(81): warning C4793: 'anonymous namespace'::CV_XADD' : function compiled as native :

После некоторого копания, похоже, проблема с настройкой поддержки CLR. Я видел несколько постов, в которых говорилось об одной и той же проблеме, но мой вопрос здесь был бы более общим:

Что это за "родной" и "clr"? В чем разница между различными уровнями поддержки clr? Я не думаю, что нашел страницу, которая может кратко рассказать мне о концепции, прежде чем будет перегружена кучей других деталей.

Спасибо.

1 Ответ

2 голосов
/ 15 февраля 2012

Краткий ответ : Похоже, вы компилируете свой проект как C ++ / CLI. Если вам нужен обычный неуправляемый C ++, используйте шаблон C ++ «Проект Win32» в Visual Studio вместо шаблона «Приложение Windows Forms».

Более длинный ответ : Программы на C ++ / CLI могут содержать два типа:

  • Native - это обычные типы C ++.
  • CLR. Это специальные типы («ref-классы»), которые действительно являются управляемыми типами .NET.

Волшебство C ++ / CLI заключается в том, что вы можете смешивать обычные нативные типы C ++ с типами .NET в одной программе. Вы можете обращаться от нативных типов к типам CLR и обратно, и C ++ / CLI генерирует необходимый код взаимодействия.

Обычно вам следует беспокоиться об этом, только если у вас есть .NET-код и нативный код, и вам нужно, чтобы они работали вместе. Если у вас нет такого сценария, вы бы просто использовали обычный нативный C ++.

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