2014-02-11 5 views
0

입니다. code :: blocks 및 boost를 사용하고 있습니다. 나는 boost :: regex를 사용하여 컴파일 할 수있다.boost :: shared_ptr 'xadd'의 피연산자 불일치가

boost :: shared_ptr을 사용하고 프로젝트를 컴파일 할 때. 이 컴파일 오류가 발생합니다 :

...\Local\Temp\ccviNbsT.s|30|Error: operand size mismatch for xadd'| ...\Local\Temp\ccviNbsT.s|63|Error: no such instruction: incl DWORD PTR [eax]'|

참고 : shared_ptr에 정적 라이브러리가 없다는 것을 알았습니다.

include <boost/smart_ptr/shared_ptr.hpp> 

class AClass 
{ 

    void VAddView(boost::shared_ptr<IClass> pView) 
    { 

    } 
}; 

나는 혼란 스럽다. 아무도 무슨 일이 일어나는지 말해 줄 수 있니?

+0

관련 세부 정보 : toolchains installed, compiler used, flags, OS & architecture (32/64)? 부스트 버전 – sehe

답변

0

컴파일러가 어셈블러에서 인식하지 못하는 방출 지시문처럼 보입니다.

이것은 일반적으로 툴 체인이 올바르게 구성되어 있으면 발생하지 않습니다.

툴체인이 아키텍처에 대해 다소 혼동을 일으킬 수 있습니다 (예 : x64 용 어셈블리를 내 보냈지 만 어셈블러는 32 비트 아키텍처로 가정 함).

0

는 빠른 응답 해 주셔서 감사합니다

은 (때 크로스 컴파일과 같은, 당신은 여러 툴체인 설치 한 특히 경우) 컴파일 플래그를 확인하고 당신이 실제로 당신이 호출 할 것으로 예상되는 도구를 호출하고 있는지 확인 나는이 문제의 원인을 발견했다. 나는이 컴파일러 옵션과 함께 Code :: Blocks/Mingw를 사용하고 있었다 : -masm = intel, 이것을 삭제하고 프로젝트를 제대로 시작했다.