【问题标题】:boost::shared_ptr operand mismatch for 'xadd''xadd' 的 boost::shared_ptr 操作数不匹配
【发布时间】:2014-02-12 13:35:25
【问题描述】:

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

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

...\Local\Temp\ccviNbsT.s|30|错误: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)
  {

  }
};

我很困惑,谁能告诉我发生了什么事?

【问题讨论】:

  • 相关细节:安装的工具链、使用的编译器、标志、操作系统和架构 (32/64)?升压版

标签: boost size shared-ptr mismatch operand


【解决方案1】:

编译器似乎发出了汇编器无法识别的指令。

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多