【问题标题】:error LNK2019: unresolved external symbol "public: __thiscall Server::Server(class boost::asio::io_service &)错误 LNK2019:未解析的外部符号“公共:__thiscall Server::Server(class boost::asio::io_service &)
【发布时间】:2011-05-20 23:26:21
【问题描述】:

以下使用 boost::asio 的代码将无法编译:

    #ifndef _SERVER_H_
    #define _SERVER_H_

    #include "Connection.h"

    class Server
    {
    public:
      Server(boost::asio::io_service& io_service);

    private:
      void start_accept();

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


      boost::asio::ip::tcp::acceptor acceptor_;
    };

    #endif
    -------------------------------------------------------------------------------------------------
    #include "Server.h"

    Server::Server(boost::asio::io_service& io_service)
        : acceptor_(io_service, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 9985)){
            start_accept();
    }

    void Server::start_accept(){

        Connection::pointer new_connection =
          Connection::create(acceptor_.io_service());

        acceptor_.async_accept(new_connection->socket(),
            boost::bind(&Server::handle_accept, this, new_connection,
              boost::asio::placeholders::error));
    }


    void Server::handle_accept(Connection::pointer new_connection,const boost::system::error_code& error){
        if (!error)
        {
          new_connection->start();
          start_accept();
        }
      }
--------------------------------------------------------------------------------------------------
#include <Server.h>
#include <iostream>


int main()
{
  try
  {
    boost::asio::io_service io_service;
    Server server1(io_service);
    io_service.run();
  }
  catch (std::exception& e)
  {
    std::cerr << e.what() << std::endl;
  }

  return 0;
}

这是它在 Visual C++ 中产生的错误:

error LNK2019: unresolved external symbol "public: __thiscall Server::Server(class boost::asio::io_service &)" (??0Server@@QAE@AAVio_service@asio@boost@@@Z) referenced in function _main

这个错误是什么意思?

【问题讨论】:

    标签: c++ visual-c++ boost linker boost-asio


    【解决方案1】:

    这意味着您将 Server 的构造函数定义放入的任何源文件都不会被编译和/或链接。

    【讨论】:

    • 我该如何解决这个问题,我将 ctor 移到 server.h 但仍然是相同的问题,知道为什么会出现这个错误吗?
    • @MixedCoder :不知道您在问题中发布的源文件的文件名,并查看您的解决方案是如何配置的(我假设您是在 VC++ 中构建的)。
    • 是的,它是 VC++,文件是 Server.h、Servre.cpp 和 Main.cpp
    • @MixedCoder :底线是您以某种方式从项目中排除了 server.cpp ,因此它没有正确构建和/或链接。我建议从头开始创建一个新项目,然后将这些现有源文件添加到其中,这样您就知道解决方案/项目没有配置错误。
    猜你喜欢
    • 2016-07-21
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 2016-03-21
    • 2018-11-13
    • 2023-03-28
    • 2015-05-28
    • 2012-10-31
    相关资源
    最近更新 更多