Я сталкиваюсь с ошибкой линкера во время компиляции моего проекта C ++. В частности, я получаю ошибки «неопределенные ссылки», связанные с несколькими методами в моем клиентском классе при составлении кода сервера.
Вот краткий обзор моего проекта: < Br /> Проект-это приложение клиентского сервера, где класс сервера общается с клиентским классом. Класс ServerManager управляет подключенными клиентами.
Проект использует MakeFile для создания исполняемых файлов клиента и сервера. >: < /p>
/usr/bin/ld: tcp_server/main.o: in function `main::{lambda()#1}::operator()() const':
main.cpp:(.text+0x1a): undefined reference to `Client::communicate()'
/usr/bin/ld: tcp_server/main.o: in function `main':
main.cpp:(.text+0x1db): undefined reference to `Client::setServer(Server&)'
/usr/bin/ld: tcp_server/Server.o: in function `Server::broadcast(Client*, char*)':
Server.cpp:(.text+0x1d3): undefined reference to `Client::getName[abi:cxx11]()'
/usr/bin/ld: Server.cpp:(.text+0x1e2): undefined reference to `Client::getSocket()'
/usr/bin/ld: tcp_server/ServerManager.o: in function `ServerManager::addClient(std::__cxx11::basic_string const&, int const&)':
ServerManager.cpp:(.text+0x169): undefined reference to `Client::Client(std::__cxx11::basic_string, int)'
collect2: error: ld returned 1 exit status
make: *** [Makefile:23: server] Error 1
Обзор кода :
client.h:
//
// Created by notro on 1/28/25.
//
#ifndef CLIENT_H
#define CLIENT_H
#include
#include
#include
#include "Server.h"
class Server;
class Client {
public:
Client(std::string name, int sock);
std::string getName();
int getSocket();
void setServer(Server& server);
void communicate();
private:
Server* server = nullptr;
std::string name;
int sock;
};
#endif //CLIENT_H
client.cpp:
//
// Created by notro on 1/25/25.
//
#include
#include
#include
#include
#include
#include
#include "ServerManager.h"
#include "Client.h"
Client::Client(std::string name, int sock) : name(name), sock(sock) {}
std::string Client::getName() {
return this->name;
}
int Client::getSocket() {
return this->sock;
}
void Client::setServer(Server& server) {
this->server = &server;
}
void Client::communicate() {
std::string clientName = this->name;
char buffer[1024];
while (true) {
ssize_t received = recv(this->sock, buffer, sizeof(buffer), 0);
if (received == 0) {
std::cout
Подробнее здесь: https://stackoverflow.com/questions/794 ... methods-in
Неопределенные справочные ошибки в моем проекте C ++: отсутствует ссылка на методы клиента в компиляции сервера [Duplica ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение