首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LNK2019,boost::asio

LNK2019,boost::asio
EN

Stack Overflow用户
提问于 2013-01-22 05:40:59
回答 2查看 580关注 0票数 0

在2010,我得到了

错误1错误LNK2019:未解决的外部符号“__thiscall Server::__thiscall Server::Server(class boost::asio::io_service &)”(??0Server@@QAE@AAVio_service@asio@boost@@@Z),在函数_main C中引用:\User\Lucie\Documents\Visual 2010\Projects\Expérimentation \Expérimentation Serveur\Main_Serveur.obj

但是,我在头文件中有类定义,而.cpp文件中的类实现都包含在解决方案中,所以我真的不明白为什么要这样做。此外,我检查了一下,定义和声明似乎是一致的。

以下是Main_Serveur.cpp:

代码语言:javascript
复制
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:

代码语言:javascript
复制
#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的相关部分:

代码语言:javascript
复制
#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();
}

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-22 05:54:05

最后创建一个新项目,包括源和头,以及编译的项目。哦,好吧。

票数 2
EN

Stack Overflow用户

发布于 2013-02-04 09:33:54

这肯定是因为你不会编译Server.cpp。相反,您只编译了Main_serveur.cpp文件。这一次链接器没有看到Server.obj,这会弹出链接错误,就像您得到的(未定义的复制构造函数)一样。您可以创建项目,向其添加所有文件(就像您所做的那样),或者编译cpp文件,这些文件需要单独编译,以生成其objs。另外,您可以使用makefile,这比其他两个选项更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14452248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档