Я запутался в объёме деклараций «использования пространства имен» ... надеюсь, что кто-нибудь может прояснить это для меня!
Я использую две библиотеки (OpenCV и Ogre3D).У меня есть два файла cpp, один использует исключительно OpenCV (PoseEstimator.cpp), а другой - Ogre3D (OgreLogic.cpp).
Верх OgreLogic.cpp выглядит следующим образом:
#include "stdafx.h"
#include "PoseEstimator.h"
#include "OgreLogic.h"
using namespace Ogre;
И вершина PoseEstimator.cpp выглядит следующим образом:
#include "StdAfx.h"
#include "PoseEstimator.h"
using namespace cv;
using namespace std;
Это 'использование пространства имен cv' является only вхождением во всем проекте (я дважды проверил, выполнив поиск),Они не используют пространство имен в заголовках, только в файлах cpp.
Однако при компиляции OgreLogic.cpp я получаю ошибки неоднозначности, например:
cxmat.hpp (3465): ошибка C2872: 'uchar': неоднозначный символ 1> может быть 'd: \ library \ opencv2.1 \ include \ opencv \ cxtypes.h (154): unsigned char uchar' 1> или
'd: \ library\ ogresdk \ include \ ogre \ OgrePrerequisites.h (106): Ogre :: uchar '
Мне кажется, что-то не так, потому что я думаю, что все должно быть в порядке?
Любойочень признателен за помощь!
Спасибо,
Джек