boost::asio::co_spawn 在 MSVC 中未定义
boost::asio::co_spawn is undefined in MSVC
我正在尝试使用 boost.asio 创建 TCP 服务器,并按照您使用 co_spawn 的示例在新线程中启动侦听器函数。
当我尝试使用 boost::asio::co_spawn
时,Microsoft Visual Studios 告诉我它未定义,我已经包含了 boost example 包含的所有文件。
TcpServer.h
#include <iostream>
#include <string>
#include <boost/asio/co_spawn.hpp>
#include <boost/asio/detached.hpp>
#include <boost/asio/io_context.hpp>
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/signal_set.hpp>
#include <boost/asio/write.hpp>
#include <boost/asio/coroutine.hpp>
using namespace boost::asio;
class TcpServer
{
public:
TcpServer(int port);
~TcpServer();
private:
};
TcpServer.cpp
#include "TcpServer.h"
/*
Create a TcpServer on a given port
*/
TcpServer::TcpServer(int port)
{
io_context ioCtx(1);
/* E0020 identifier "co_spawn" is undefined */
co_spawn();
}
TcpServer::~TcpServer()
{
}
上面的代码告诉我 co_spawn
是未定义的,我搜索了其他名称空间并检查了替代函数并且有 none。我认为它可能是过时的文档,但版本 1.70.1
的 boost.asio
参考仍然将 co_spawn
列为免费功能。参见 here
我正在使用
提升:1.70.1
微软 Visual Studio 2017:v15.9.7
boost.asio 有预处理器代码来检测编译器的能力,并且只有在编译器支持的情况下才打开协程支持。
对于 MSVC,我认为您需要将编译器标志 /await
添加到编译器命令行选项列表。
参考:https://docs.microsoft.com/en-us/cpp/build/reference/await-enable-coroutine-support?view=vs-2019
我正在尝试使用 boost.asio 创建 TCP 服务器,并按照您使用 co_spawn 的示例在新线程中启动侦听器函数。
当我尝试使用 boost::asio::co_spawn
时,Microsoft Visual Studios 告诉我它未定义,我已经包含了 boost example 包含的所有文件。
TcpServer.h
#include <iostream>
#include <string>
#include <boost/asio/co_spawn.hpp>
#include <boost/asio/detached.hpp>
#include <boost/asio/io_context.hpp>
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/signal_set.hpp>
#include <boost/asio/write.hpp>
#include <boost/asio/coroutine.hpp>
using namespace boost::asio;
class TcpServer
{
public:
TcpServer(int port);
~TcpServer();
private:
};
TcpServer.cpp
#include "TcpServer.h"
/*
Create a TcpServer on a given port
*/
TcpServer::TcpServer(int port)
{
io_context ioCtx(1);
/* E0020 identifier "co_spawn" is undefined */
co_spawn();
}
TcpServer::~TcpServer()
{
}
上面的代码告诉我 co_spawn
是未定义的,我搜索了其他名称空间并检查了替代函数并且有 none。我认为它可能是过时的文档,但版本 1.70.1
的 boost.asio
参考仍然将 co_spawn
列为免费功能。参见 here
我正在使用 提升:1.70.1 微软 Visual Studio 2017:v15.9.7
boost.asio 有预处理器代码来检测编译器的能力,并且只有在编译器支持的情况下才打开协程支持。
对于 MSVC,我认为您需要将编译器标志 /await
添加到编译器命令行选项列表。
参考:https://docs.microsoft.com/en-us/cpp/build/reference/await-enable-coroutine-support?view=vs-2019