LNK2019, boost::asio
LNK2019, boost::asio
在visual studio 2010中,我得到
错误1错误LNK2019:未解析的外部符号"public: __thiscall "Server::Server(类boost::asio::io_service &)"(??0Server@@QAE@AAVio_service@asio@boost@@@ z)中引用的C:UsersLucieDocumentsVisual Studio2010 项目实验Serveur 实验Serveur Main_Serveur.obj
然而,我有头文件中的类定义和.cpp文件中的类实现都包含在解决方案中,所以我真的不明白为什么我得到这个。此外,我检查了一下,定义和声明似乎是匹配的。
这里是main_server .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<boostbind.hpp>
#include<boostasio.hpp>
#include<boostshared_ptr.hpp>
#include<boostenable_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<boostasio.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();
}
最终创建了一个新项目,并包括源文件和头文件,并编译了该项目。哦。
必须,因为您不会编译Server.cpp。相反,您只编译main_server .cpp文件。这一次,链接器看不到服务器。Obj,这会弹出链接错误,就像你得到的(未定义的复制构造函数)您可以创建项目,将所有文件添加到其中(就像您所做的那样),或者编译cpp文件,这些文件将被单独编译以生成它的objs。此外,您还可以使用makefile,它比其他两个选项要好。
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- boost::asio::steady_timer()与sleep()我应该使用哪一个
- boost::asio如何生成多个协同程序,然后加入它们
- 从 Boost ASIO 获取 epoll 描述符 io_service对象
- 如何在 Boost.Asio 中使用 Zero-copy sendmsg/receive
- C++ Boost::asio串行通信与Arduino无法写入
- 如何使用 Boost Asio 在 Android 上获取我的本地 udp IP 地址?
- boost::asio UDP 广播客户端仅接收"fast"数据包
- 执行时使用 boost::asio::d eadline_timer 时出错
- Boost.Asio/OpenSSL HTTPS GET certificate trouble
- C++ boost::asio::ip::tcp::acceptor 有时不接受连接器?
- boost::asio data owning `ConstBufferSequence`
- 如何替换此示例代码片段中已弃用的handler_type_t或 boost::asio::handler_type?
- 将 boost 序列化对象的 asio::streambuf 表示转换为 Beast 的 DynamicBody req.body()
- 如何将boost::asio::d eadline_timer 与Qt一起使用?
- 将更高的优先级设置为 boost::asio 线程处理进程
- Async_read_until限制读取的字节大小(Boost::asio)
- Boost Asio - boost::bind 导致程序崩溃
- 使用Asio(Boost)通过网络发送灵活的数据量