mingw-w64安装程序中选项的含义

Meaning of options in mingw-w64 installer

在 MinGW-W64 在线安装程序中,有几个字段可以 select。但是我找不到任何关于此的文档,而且我所做的猜测并没有给我想要的行为。

很明显,这个项目已经做了很多工作,所以遗憾的是,由于缺乏基本文档而阻碍了采用。

"Version" 和 "Architecture" 字段是不言自明的,但我遇到问题的其他字段是(当前安装程序显示的值):

我在之前的安装中选择的值是 win32seh1(很明显,从那时起选项已经改变,但我 none 更明智什么是什么)。

每个选项的优缺点是什么,尤其是线程模型和异常处理,哪个版本是"best"?

我使用x86_64-win32-seh-rev1遇到的具体问题是:

我可以解决调试问题,但如果有工作的 C++11 线程就更好了。

例外情况

请参阅this answer for all three models (dwarf, sjlj and seh)

线程

您可以决定要使用哪种线程:POSIX 线程或 Windows API 线程。 posix 线程具有可移植性的优势;您可以在其他 posix 平台(例如 linux)上使用您的代码而无需修改。 win32 线程 api 仅为 windows。如果您在 windows 上 100% 并且喜欢 api,那没问题。

如果您使用像 std::thread 这样的新 C++ 功能,那么影响就不那么明显了,因为您已经有了用于线程的标准 api。我不确定如果你不直接使用 posix- / win32 thread api 是否真的有很大的区别(也许 std::thread 原生句柄?)

另请参阅:mingw-w64 threads: posix vs win32

构建版本

我想这只是另一个版本号,因为 Mingw(-w64) 遵循 GCC 版本(4.8.x、4.9.x 等)。如果不需要特定版本,则应使用最新版本。

线程问题

如果抛出的异常是:

terminate called after throwing an instance of 'std::system_error'
  what():  Enable multithreading to use std::thread: Operation not permitted

然后 link pthreads - 问题就解决了。


推荐

如果您没有理由使用特定选项;我的个人推荐:

posix - dwarf - 2
  • Posix 启用 C++11 <thread><mutex><future>
  • 矮人更快
  • 2 因为是最新版本