#c #visual-c #boost #linker #boost-asio
#c #visual-c #повышение #компоновщик #повышение-asio
Вопрос:
Следующий код, использующий boost::asio, не будет компилироваться:
#ifndef _SERVER_H_
#define _SERVER_H_
#include "Connection.h"
class Server
{
public:
Server(boost::asio::io_serviceamp; io_service);
private:
void start_accept();
void handle_accept(Connection::pointer new_connection,const boost::system::error_codeamp; error);
boost::asio::ip::tcp::acceptor acceptor_;
};
#endif
-------------------------------------------------------------------------------------------------
#include "Server.h"
Server::Server(boost::asio::io_serviceamp; 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(amp;Server::handle_accept, this, new_connection,
boost::asio::placeholders::error));
}
void Server::handle_accept(Connection::pointer new_connection,const boost::system::error_codeamp; 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::exceptionamp; 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 amp;)" (??0Server@@QAE@AAVio_service@asio@boost@@@Z) referenced in function _main
Что означает эта ошибка?
Ответ №1:
Это означает, что в какой бы исходный файл вы ни поместили Server
определение конструктора, он не компилируется и / или не связывается.
Комментарии:
1. и как я могу исправить эту проблему я переместил ctor на server.h, но проблема все та же, в любом случае, почему возникает эта ошибка?
2. @MixedCoder : Не зная имен файлов исходных файлов, которые вы опубликовали в своем вопросе, и видя, как настроено ваше решение (я предполагаю, что вы создаете из VC ).
3. да, это VC , файлы Server.h,Servre.cpp и Main.cpp
4. @MixedCoder : Суть в том, что вы каким-то образом исключили server.cpp из вашего проекта, поэтому он не собран и / или не связан должным образом. Я предлагаю создать новый проект с нуля и впоследствии добавить в него эти существующие исходные файлы, чтобы вы знали, что решение / проект не сконфигурированы неправильно.