在Visual Studio 2010中,我得到LNK2019,提高:: ASIO
错误1错误LNK2019:无法解析的外部符号“公用:__thiscall 服务器::服务器(类boost ::支持ASIO :: io_service对象&) “ (?? 0Server @@ QAE @ AAVio_service @ asio @ boost @@@ Z) 函数_main C:\ Users \ Lucie \ Documents \ Visual Studio 2010 \ Projects \ExpérimentationServeur \Expérimentation Serveur \ Main_Serveur .obj
但是,我在解决方案中包含的头文件和.cpp文件中的类实现中都有类定义,所以我真的不明白为什么我要这样做。此外,我已经检查了,定义和声明似乎相符。
这里是Main_Serveur.cpp:
include <ctime>
#include <iostream>
#include <string>
#include <vector>
#include <hash_map>
#include <functional>
#include <boost/bind.hpp>
#include <algorithm>
#include <boost/shared_ptr.hpp>
#include <boost/enable_shared_from_this.hpp>
#include <boost/asio.hpp>
#include <hash_set>
#include "Connection.h"
#include "Server.h"
using boost::asio::ip::tcp;
int main()
{
try
{
boost::asio::io_service io_service;
Server server(io_service);
io_service.run();
}
catch (std::exception& e)
{
std::cerr << e.what() << std::endl;
}
std::cin.get();
return 0;
}
这里是Server.h:
#ifndef __SERVER_H__
#define __SERVER_H__
#include"Connection.h"
#include<boost\bind.hpp>
#include<boost\asio.hpp>
#include<boost\shared_ptr.hpp>
#include<boost\enable_shared_from_this.hpp>
#include<hash_set>
#include<string>
using boost::asio::ip::tcp;
class Connection;
class Server : public boost::enable_shared_from_this<Server>
{
public:
Server(boost::asio::io_service & io_service);
void removeSocketFromList(tcp::socket * socketToRemove);
void sendToList(std::string message);
void addSocketToList(tcp::socket * newSocket);
private:
void start_accept();
void handle_accept
(
boost::shared_ptr<Connection> new_connection,
const boost::system::error_code& error
);
std::hash_set<tcp::socket*> sockets_;
tcp::acceptor acceptor_;
};
#endif
这里是Server.cpp的相关部分:
#include"Server.h"
#include"Connection.h"
#include<boost\asio.hpp>
#include<hash_set>
using boost::asio::ip::tcp;
Server::Server(boost::asio::io_service & io_service):
acceptor_(io_service, tcp::endpoint(tcp::v4(), 13))
{
start_accept();
}
任何帮助将不胜感激。
'boost :: asio'是必须实际构建的(少数)Boost库之一。它不仅仅是头文件 - 你必须构建你需要的组件并配置Visual Studio,以便它能找到这些位。 –
请参阅Boost入门指南的第5部分:http://www.boost.org/doc/libs/1_52_0/more/getting_started/windows.html#prepare-to-use-a-boost-library-binary –
boost :: asio被编译并且工作得很好。我不相信boost :: asio是问题的原因。该软件运行良好一段时间,直到结构的新增加使其停止工作。我不明白这些增加是如何相关的;它们主要涉及将组织套接字指针添加到哈希集中 - 与连接器几乎无关。 – Julius