C++ 名称空间;asio“;“没有成员”;“语境”;

C++ 名称空间;asio“;“没有成员”;“语境”;,c++,boost-asio,asio,C++,Boost Asio,Asio,我正在试着弄明白为什么它会这样说,当我在跟踪一段视频时,我做了完全相同的事情,但对他来说是有效的。我试图解决的错误是命名空间“asio”没有成员“io\U上下文” #包括 #ifdef_WIN32 #定义_WIN32_WINNT 0x0A00 #恩迪夫 #定义ASIO_独立//ASIO出自boost开发框架,但 //我没有使用它,所以它告诉asio它应该作为独立使用。 #包括 #包含//处理内存的移动 #包括//为网络通信所需的所有事情准备asio int main() { asio::错误代

我正在试着弄明白为什么它会这样说,当我在跟踪一段视频时,我做了完全相同的事情,但对他来说是有效的。我试图解决的错误是命名空间“asio”没有成员“io\U上下文”

#包括
#ifdef_WIN32
#定义_WIN32_WINNT 0x0A00
#恩迪夫
#定义ASIO_独立//ASIO出自boost开发框架,但
//我没有使用它,所以它告诉asio它应该作为独立使用。
#包括
#包含//处理内存的移动
#包括//为网络通信所需的所有事情准备asio
int main()
{
asio::错误代码ec;
//创建一个“上下文”——本质上是特定于平台的接口
asio::io_上下文;
//获取我要连接到的位置的地址
asio::ip:tcp::endpoint端点(asio::ip::make_地址(“127.0.0.1”,ec),80);
//创建一个套接字,上下文将交付实现
asio::ip::tcp::套接字(上下文);
//告诉套接字连接到地址
插座连接(端点,ec);
//检查连接状态(已连接/失败)
如果(!ec){

std::cout您的boost版本使用旧接口(
io_服务
),只需升级或使用旧接口即可

比较和升级说明:

以下是Boost 1.66下的代码片段:

#include <iostream>

#ifdef _WIN32
#define _WIN32_WINNT 0x0A00
#endif
#define ASIO_STANDALONE // asio came out of the boost development framework but
// I am not using it so it tells asio it should be used as standalone.
#include <boost/asio.hpp>

namespace asio = boost::asio;
using boost::system::error_code;

int main() {
    error_code ec;
    asio::io_service context;
    asio::ip::tcp::endpoint endpoint(asio::ip::make_address("127.0.0.1", ec), 80);

    asio::ip::tcp::socket socket(context);
    socket.connect(endpoint, ec);

    if (!ec) {
        std::cout << "Connected!" << std::endl;
    } else {
        std::cout << "Failed to connect to:\n" << ec.message() << std::endl;
    }
}
#include <boost/asio.hpp>
#include <iostream>
using boost::asio::ip::tcp;

int main() {
    try {
        tcp::socket socket(boost::asio::system_executor{});
        socket.connect({{}, 80});

        std::cout << "Connected!" << std::endl;
    } catch (std::exception const& e) {
        std::cout << "Failed to connect to:\n" << e.what() << std::endl;
    }
}

更现代: 使用boost1.73

#include <iostream>

#ifdef _WIN32
#define _WIN32_WINNT 0x0A00
#endif
#define ASIO_STANDALONE // asio came out of the boost development framework but
// I am not using it so it tells asio it should be used as standalone.
#include <boost/asio.hpp>

namespace asio = boost::asio;
using boost::system::error_code;

int main() {
    error_code ec;
    asio::io_service context;
    asio::ip::tcp::endpoint endpoint(asio::ip::make_address("127.0.0.1", ec), 80);

    asio::ip::tcp::socket socket(context);
    socket.connect(endpoint, ec);

    if (!ec) {
        std::cout << "Connected!" << std::endl;
    } else {
        std::cout << "Failed to connect to:\n" << ec.message() << std::endl;
    }
}
#include <boost/asio.hpp>
#include <iostream>
using boost::asio::ip::tcp;

int main() {
    try {
        tcp::socket socket(boost::asio::system_executor{});
        socket.connect({{}, 80});

        std::cout << "Connected!" << std::endl;
    } catch (std::exception const& e) {
        std::cout << "Failed to connect to:\n" << e.what() << std::endl;
    }
}
#包括
#包括
使用boost::asio::ip::tcp;
int main(){
试一试{
tcp::socket套接字(boost::asio::system_executor{});
socket.connect({{},80});

std::您能一字不差地完整显示您的第一个编译错误吗?
io\u上下文
仍然显示在
boost::asio
名称空间中,无论您是否单独使用它。您为什么要退出
boost
?还请指定您使用的是哪个版本的boost或asio。您需要
\includee
添加了“老式的1.66.0”版本和简化的1.73.0版本。[现场演示]