2014-02-11 2 views
0

Я использую code :: blocks и boost. Я могу скомпилировать using 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 не имеет статического lib.

include <boost/smart_ptr/shared_ptr.hpp> 

class AClass 
{ 

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

    } 
}; 

Я смущен, может ли кто-нибудь сказать, что происходит?

+0

релевантные детали: набор инструментов, используемый компилятор, флаги, ОС и архитектура (32/64)? Версия для Boost – sehe

ответ

0

Похоже, что компилятор издает инструкции, которые ассемблер не распознает.

Это не должно происходить, если ваша целлюлоза хорошо сконфигурирована.

Это может произойти, если ваша инструментальная цепочка каким-то образом запуталась в архитектуре (например, она испускает сборку для x64, но ассемблер предполагает 32-битную архитектуру).

Проверьте флаги компиляции, и убедитесь, что вы на самом деле применение инструментов, которые вы ожидаете, чтобы быть вызовом (особенно, если вы установили несколько компилированных инструменты, например, когда кросс компиляции)

0

Спасибо за быстрый ответ, Я нашел причину этой проблемы. Я использовал Code :: Blocks/Mingw с этой опцией компилятора: -masm = intel, я удалил это, и мой проект начал правильно строить.

Смежные вопросы