Я сталкиваюсь с ошибкой линкера во время компиляции моего проекта 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++
Программы на C++. Форум разработчиков
1738697590
Anonymous
Я сталкиваюсь с ошибкой линкера во время компиляции моего проекта 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
[b] Обзор кода [/b]:
[b] client.h[/b]:
//
// 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
[b] client.cpp[/b]:
//
// 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
Подробнее здесь: [url]https://stackoverflow.com/questions/79412794/undefined-reference-errors-in-my-c-project-missing-link-to-client-methods-in[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия