gpt4 book ai didi

c++ - 使用 boost asio 编译项目时出错

转载 作者:太空狗 更新时间:2023-10-29 21:07:29 26 4
gpt4 key购买 nike

我已经创建了一个单独的项目来将我的服务器组件连接到使用 TCP/IP 和 boost::asio 的客户端。我首先分别创建和测试了这个项目,然后测试了这些类,一切正常。

将它添加到我的服务器组件后,它现在不再编译,而且我得到以下关于甚至不是我的代码的代码的编译器错误!

   c:\Program Files\boost\boost_1_44\boost\asio\detail\impl\win_iocp_io_service.ipp(442): error C2039: 'CreateWaitableTimer' : is not a member of 'operator``global namespace'''


c:\Program Files\boost\boost_1_44\boost\asio\detail\impl\win_iocp_io_service.ipp(442): error C3861: 'CreateWaitableTimer': identifier not found, even with argument-dependent lookup

我不知道为什么会出现这些错误,我已经检查了项目中的所有包含路径和所有包含文件。

对于导致这些错误的原因,有人有什么建议吗?

头文件“tcp_server.h”包含在我的项目中,是导致错误弹出的文件。这是这个文件里面定义的类(我自己写的)

#include "stdafx.h"

#include "tcp_connection.h" //boost shared_ptr etc included inside this file already
#include <ResolverQueueHandler.h> //Handles threaded queues for requests from client

class tcp_server
{
public:
tcp_server::tcp_server(boost::asio::io_service& io_service, int port,boost::shared_ptr<ResolverQueueHandler> queue_handler);


private:

void start_accept();
void handle_accept(tcp_connection::pointer new_connection, const boost::system::error_code& error);

boost::asio::io_service _io_service;
boost::asio::ip::tcp::acceptor acceptor_;
boost::shared_ptr<ResolverQueueHandler> _queue_handler;
int _port;
};

最佳答案

Windows SDK 通过使用预处理器 #define 激活各种操作系统特定版本的附加 API 调用。这允许您为任何版本的 Windows 构建应用程序,同时防止您无意中构建不能在 Windows 98 上运行的应用程序。

::CreateWaitableTimer 是在 Windows 2000 发布的同时添加的。您需要将此 #define 添加到您的应用程序中 - 在通用 header 中或在相应 C++ 项目的项目设置中:

#define _WIN32_WINNT 0x0400

引用资料:

创建等待计时器:http://msdn.microsoft.com/en-us/library/ms682492(v=vs.85).aspx

使用 Windows header :http://msdn.microsoft.com/en-us/library/aa383745(v=vs.85).aspx

关于c++ - 使用 boost asio 编译项目时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4919209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com