2012-04-09 3 views
1

Visual Studio 2010을 사용하여 C++ 코드로 작업하고 있습니다. 프로젝트와 모든 내용은 다른 사람이 작성하고 공유 드라이브에 복사합니다. 제작자가 자신의 컴퓨터에 그것을 빌드하면 잘 작동합니다. 내가 솔루션을 빌드 할 때, 나는한 컴퓨터에서 모호한 기호 오류가 발생할 수 있으며 다른 컴퓨터에서는 불확실한 기호 오류가 발생할 수 있습니까?

error C2872: '<lambda0>' : ambiguous symbol could be 
'[File].cpp(66) : anonymous-namespace'::<lambda0>' or 
'[Different file].h(549) : `anonymous-namespace'::<lambda0>'. 

다음 오류에 있다고 라인의 예 이러한 오류의 모두를 얻을 것은 :

std::pair<int, std::pair<int, Point>> b) -> bool { return (a.second.second < b.second.second); }); 

항상 오류 것 같아 '});'로 끝나는 줄이 생깁니다. 전체 코드는 여기에 표시하기에는 막대한 금액이며, 다른 컴퓨터에서도 작동하므로 아마도 내 설정이나 다른 문제가있을 수 있습니다. 아무도 그들이 무엇 일지 모른다고 추측 할 수 있습니까? 이 아닌지하지만 컴파일러 오류에 대한 MSDN 페이지에 따라 본 적이 있다면 확실하지

+0

ANSI 코드 페이지를 확인하십시오. – Joshua

+1

컴파일러에서 C++ 11을 지원합니까? – juanchopanza

+2

VS에 대한 동일한 패치 레벨? – 0xC0000022L

답변

2

: 저도 같은 문제 가지 모호한 기호의 문제가 있었다

C2872 can occur if a header file includes a using Directive (C++), and a subsequent header file is #include'd and contains a type that is also in the namespace specified in the using directive. Specify a using directive only after all your header files are specified with #include.

MSDN Page

0

. 나에게는 동일한 기능을 갖고 있지만 분명히 다른 정의를 가진 두 개의 네임 스페이스를 사용하고있는 것으로 나타났습니다. 나는 네임 스페이스 중 하나의 사용을 멈춰야 만하고 이것으로 문제가 해결됩니다. 예를 들어

:

using namespace cv; 
using namespace boost::accumulator; 
accumulator_set<double, stats<tag::mean, tag::variance> > acc; 
double meanval = mean (acc); 

컴파일 오류를 통해이 뜻 : error C2872: 'mean' : ambiguous symbol 모두가 이력서를 네임 스페이스 및 부스트 : 누적이 같은 기능을 가지고 있기 때문입니다

내가이

도움이되기를 바랍니다 "의미"
관련 문제