错误编译项目与升压asio
问题描述:
我已经创建了一个单独的项目,以连接我的服务器组件到客户端使用TCP/IP与boost :: asio。我首先单独创建并测试了这个项目并测试了这些类,一切正常。错误编译项目与升压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
s激活各种操作系统特定版本的附加API调用。这使您可以构建应用程序的任何版本的Windows,同时防止您无意中建设,将无法运行的应用程序,比如,Windows 98的
::CreateWaitableTimer
同时Windows 2000发布加入。你需要这个#define
添加到您的应用程序 - 无论是在一个共同的头,或在适当的C++项目的项目设置:
#define _WIN32_WINNT 0x0400
参考文献:
CreateWaitableTimer:http://msdn.microsoft.com/en-us/library/ms682492(v=vs.85).aspx
使用Windows标头:http://msdn.microsoft.com/en-us/library/aa383745(v=vs.85).aspx
检查boost_system和boost_regex库是否已链接到 – Arunmu 2011-02-07 08:29:10