如何在 Visual Studio 2017 中为 Linux 应用启用多线程

Posted

技术标签:

【中文标题】如何在 Visual Studio 2017 中为 Linux 应用启用多线程【英文标题】:How to enable multithreading for Linux app in Visual Studio 2017 【发布时间】:2017-04-12 20:18:40 【问题描述】:

我目前正在为 VS 2017 中的 Linux 开发多线程应用程序。

作为远程 Linux 机器,我在 Windows 中使用内置的 Ubuntu bash,这是周年纪念更新的一部分。

编译顺利,构建成功。但是在运行程序后立即出现以下错误。

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

我试图摆弄链接和编译设置。但我只是把整个项目搞砸了。

有没有人遇到并解决过此类问题?谢谢。

编辑:此线程被标记为重复。让我解释一下为什么我认为这是不同的。我正在使用 VS2017 在 Windows 主机上进行开发,并且试图在 VS2017 中实现工作调试。我无法像建议的重复线程中那样直接编辑编译例程命令。

【问题讨论】:

即使您使用的是 VS2017 和 Windows 的 Linux 子系统,您的程序也是在 Linux 上构建和执行的。因此,来自链接问题的答案(即“与 pthread 库的链接”)适用于您的情况;你只需要弄清楚如何让 VS 做到这一点。 这就是我在这里问的原因,我知道这一点。我遵循了大多数教程如何告诉 VS 在编译中使用 pthread,但没有成功。 很公平,我猜。我假设平台工具集是“Remote_GCC_1_0”;您需要做的就是添加“-pthread”来编译和链接命令行。 VS 配置将大多数 g++ 选项映射到特定的配置值,但不是这个。转到项目的配置,“C/C++ -> 所有选项”,将“-pthread”添加到“附加选项”配置值。转到“链接器 -> 所有选项”并执行相同操作。 终于解决了。谢谢。基本上我按照你说的做了,我不得不为文件设置和项目设置添加附加选项。 您不必修改文件设置——它们应该是从项目级别继承的。那里出了点问题,但这是与线程问题不同的问题 【参考方案1】:

我知道@Andrey Turkin 已经在 cmets 中给出了答案。我想在此处将其添加为答案,因为并非所有人都会阅读 cmets。我已经搜索了 2 天了,@Andrey Turkin 帮我解决了这个问题。请按照他的评论来解决这个问题。

假设平台工具集是“Remote_GCC_1_0”;您需要做的就是添加“-pthread”来编译和链接命令行。 VS 配置将大多数 g++ 选项映射到特定的配置值,但不是这个。转到项目的配置,“C/C++ -> 所有选项”,将“-pthread”添加到“附加选项”配置值。转到“链接器 -> 所有选项”并执行相同操作。

【讨论】:

以上是关于如何在 Visual Studio 2017 中为 Linux 应用启用多线程的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C++ 非托管库在 Visual Studio 2017 中为 Xamarin.Forms 设置项目?

如何在 Visual Studio Code 中为 React Native 设置调试?

在Visual Studio 2017中为WPF应用程序创建MSI安装程序后,EXE不执行任何操作

在 html 中为 Visual Studio 中的 Angular 静态键入

如何在 Visual Studio 2013 中为 sqlite 配置实体框架 6

如何在 Visual Studio Code 中为 Python 设置虚拟环境?