在带有标志选项 -m32 的 gcc-8.2.2 上找不到 std::thread。我正在使用 mingw

Posted

技术标签:

【中文标题】在带有标志选项 -m32 的 gcc-8.2.2 上找不到 std::thread。我正在使用 mingw【英文标题】:std::thread is not being found on gcc-8.2.2 with flag option -m32. I'm using mingw 【发布时间】:2019-04-16 16:14:17 【问题描述】:

我试图为一个学校项目编译一个 cpp 程序。它对图形使用 libbgi,适用于 32 位目标。对于这个项目,我想用 std::thread 添加一些多线程,但编译器说我找不到 std::thread。

我尝试了一个低版本的编译器,支持 c++11。


#include <iostream>
#include <thread>

int main()
    std::thread t([]()
             std::cout << "Hello\n";
        
    );
    t.join();


这个程序用 -m64 可以很好地编译,但不能用 -m32。

【问题讨论】:

欢迎来到 Stack Overflow。文本图像在小屏幕上无法访问、搜索或轻松阅读。请edit 问题并用图片中包含的文本来扩充或替换图片。可以使用问题编辑器中的功能适当地格式化文本。 【参考方案1】:

我相信您可能需要与pthread 链接并使用c++0x

g++ -std=c++0x -m32 main.cpp -pthread -o main

我重新创建了您的错误,并使用这些标志解决了它。

【讨论】:

以上是关于在带有标志选项 -m32 的 gcc-8.2.2 上找不到 std::thread。我正在使用 mingw的主要内容,如果未能解决你的问题,请参考以下文章

从 Windows 运行带有标志的可执行文件

如何在 Bash 中获取带有标志的参数

Win32 选项卡控件中的右对齐选项卡项

如何为 iOS 编译带有 fvisibility=hidden 标志的 openssl

CMake - 构建没有首选 32 位标志的 C#

带有 DMA 的 STM32 I2C 传输已完成,但 DMA 中断程序不工作