0

我正在使用 code::blocks 和 boost。我可以使用 boost::regex 进行编译。

当我使用 boost::shared_ptr 并编译我的项目时。我收到此编译错误:

...\Local\Temp\ccviNbsT.s|30|错误:操作数大小不匹配,xadd'| ...\Local\Temp\ccviNbsT.s|63|Error: no such instruction:包括 DWORD PTR [eax]'|

注意:我注意到 shared_ptr 没有静态库。

include <boost/smart_ptr/shared_ptr.hpp>

class AClass
{

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

  }
};

我很迷茫,谁能告诉我这是怎么回事?

4

2 回答 2

0

看起来编译器正在发出汇编器无法识别的指令。

如果您的工具链配置良好,通常不会发生这种情况。

如果您的工具链对架构感到困惑(例如,它为 x64 发出汇编,但汇编器假定为 32 位架构),则可能会发生这种情况。

检查您的编译标志,并检查您是否确实在调用您希望调用的工具(特别是如果您安装了多个工具链,例如在交叉编译时)

于 2014-02-11T10:38:23.797 回答
0

感谢您的快速响应,我找到了这个问题的原因。我使用 Code::Blocks/Mingw 和这个编译器选项:-masm=intel,我删除了这个,我的项目开始正确构建。

于 2014-02-12T05:35:25.953 回答