首页 > 解决方案 > 将 sysv_abi 属性与 mingw 一起使用会产生损坏的程序集

问题描述

我正在尝试使函数在 Windows 上使用 sysv_abi。
使用 C++ 异常时也会出现问题,因为出于某种原因,mingw 生成的函数没有.seh_proc.seh_endproc围绕它。因此,对于下面的代码示例
会产生这样的错误Error: .seh_handlerdata used outside of .seh_proc blockx86_64-w64-mingw32-g++ A.cpp -o A

// A.cpp
#include <stdexcept>

__attribute__((sysv_abi)) void func() {
  throw std::runtime_error("FAILURE");
}

int main() {
  func();
}

我知道我可以在编译 mingw 时用一个标志完全禁用 SEH,但我宁愿不这样做,因为那不是可移植的。

标签: c++mingw-w64

解决方案


推荐阅读