2014-05-19 88 views
4

我將更詳細地描述我的情況。我正在使用C++,OpenCV,Tesserect構建識別車牌的系統,但是當我編譯代碼時,它返回給我一堆錯誤的模糊引用,因此我檢查了我的代碼的所有行。 我搜索了這個組的解決方案,並嘗試了幾次沒有成功。tesseract Remove_Reference visual studio 2012項目中的曖昧符號

問題:使用

error C2872 : ' Remove_Reference ' : ambiguous symbol File: tesscallback.h Line : 1011 
error C2872 : ' Remove_Reference ' : ambiguous symbol File: tesscallback.h Line : 1030 
error C2872 : ' Remove_Reference ' : ambiguous symbol File: tesscallback.h Line : 1061 
error C2872 : ' Remove_Reference ' : ambiguous symbol File: tesscallback.h Line : 1105 
error C2872 : ' Remove_Reference ' : ambiguous symbol File: tesscallback.h Line : 1136 
error C2872 : ' Remove_Reference ' : ambiguous symbol File: tesscallback.h Line : 1179 
error C2872 : ' Remove_Reference ' : ambiguous symbol File: tesscallback.h Line : 1208 

軟件:

MS visual studio 2012 
Path to visual studio : " C : \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ devenv.exe " 
OpenCV version: 2.4.8 
OS: Windows 7 Home Premium , 64 -bit 
Core i7 
Tesseract version: tesseract - 2.3.02 - win32 - lib -include -dirs (tested other versions) 
Inguagem used : C + +11 

感謝您的幫助

回答

5

我一直在麻煩幾天有完全相同的問題(我通過使用tesseract來開發板識別項目),我剛剛解決了這個問題。使用命名空間XXX「REMOVE」使用頭文件代碼行(.h)(如果通過使用std :: vector或cv :: Mat等導致.h文件中的錯誤容忍它們)AND USE「using namespace XXX」CODE LINES IN您的源代碼(.cpp文件)。

我refered此鏈接:http://bytes.com/topic/net/answers/456267-idataobject-ambiguous-symbol-error

和抱歉,我的英語:)

4

我已經通過下面的方法來解決同樣的問題

// Specified by TR1 [4.7.2] Reference modifications. 
// template <class T> struct remove_reference; 
// template<typename T> struct remove_reference { typedef T type; }; 
// template<typename T> struct remove_reference<T&> { typedef T type; }; 
2

的事情是,最新的C++有一個remove_reference的定義在stdtesscallback.h包含另一個定義。當您使用using namespace std時,編譯器會因重新定義而出錯。

您可以刪除所有using namespace std和使用std::(建議和解釋here)或取消註釋tesscallback.h所有definitions of remove_reference