потоки c ++ 11, SFML и code :: blocks

0

Я пытаюсь запустить этот код, используя С++ 11 std::thread и SFML-библиотеку для работы в сети, но я просто не могу его построить. Я уверен, что это имеет какое-то отношение к тому, как я настраиваю компилятор, но я не знаю... Как я могу заставить это работать? Я уже пытался запутать эту работу, пройдя через учебники и т.д. В течение нескольких часов, поэтому я обратился к Qaru для ответов. Я использую код :: блокирует IDE и компилятор x32-4.8.1-posix-dwarf-rev5 на 64-разрядной машине Windows 7.

#include <iostream>
#include <thread>
#include <string>
#include <SFML/System.hpp>
#include <SFML/Network.hpp>


using namespace std;

void doNetwork() {
    cout << "Starting..." << endl;

    sf::TcpListener listener;
    listener.listen(88);

    // Wait for a connection
    sf::TcpSocket socket;
    listener.accept(socket);
    cout << "New client connected: " << socket.getRemoteAddress() << endl;

    // Receive a message from the client
    char buffer[1024];
    size_t received = 0;
    socket.receive(buffer, sizeof(buffer), received);
    cout << "The client said: " << buffer << endl;

    // Send an answer
    string message = "Welcome, client";
    socket.send(message.c_str(), message.size() + 1);
}

int main()
{
    thread task(doNetwork);
    task.join();
    return 0;
}

Это то, что говорит журнал отладки сборки:

-------------- Build: Debug in bang ---------------

Compiling: main.cpp
Linking console executable: bin\Debug\bang.exe
obj\Debug\main.o: In function 'Z9doNetworkv':
C:/Users/user/CppProjects/bang/main.cpp:12: undefined reference to 'sf::TcpListener::TcpListener()'
C:/Users/user/CppProjects/bang/main.cpp:13: undefined reference to 'sf::TcpListener::listen(unsigned short)'
C:/Users/user/CppProjects/bang/main.cpp:16: undefined reference to 'sf::TcpSocket::TcpSocket()'
C:/Users/user/CppProjects/bang/main.cpp:17: undefined reference to 'sf::TcpListener::accept(sf::TcpSocket&)'
C:/Users/user/CppProjects/bang/main.cpp:18: undefined reference to 'sf::TcpSocket::getRemoteAddress() const'
C:/Users/user/CppProjects/bang/main.cpp:18: undefined reference to 'sf::operator<<(std::ostream&, sf::IpAddress const&)'
C:/Users/user/CppProjects/bang/main.cpp:23: undefined reference to 'sf::TcpSocket::receive(void*, unsigned int, unsigned int&)'
C:/Users/user/CppProjects/bang/main.cpp:28: undefined reference to 'sf::TcpSocket::send(void const*, unsigned int)'
obj\Debug\main.o: In function 'ZN2sf11TcpListenerD1Ev':
C:/Users/user/CppProjects/SFML-2.1/include/SFML/Network/TcpListener.hpp:43: undefined reference to 'sf::Socket::~Socket()'
obj\Debug\main.o: In function 'ZN2sf9TcpSocketD1Ev':
C:/Users/user/CppProjects/SFML-2.1/include/SFML/Network/TcpSocket.hpp:46: undefined reference to 'sf::Socket::~Socket()'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
10 errors, 0 warnings

Параметры, которые я использую с компилятором:

Флаги компилятора:

-std=C++0x

Другие варианты:

-std=gnu++0x -U__STRICT_ANSI__

определяет:

SFML_STATIC

Настройки компоновщика:

sfml-system-s-d
sfml-network-s-d

Поиск каталогов - компилятор:

C:\Users\user\CppProjects\SFML-2.1\include
C:\Users\user\CppProjects\bang\include

Поиск каталогов - Linker:

C:\Users\user\CppProjects\SFML-2.1\lib\

Исполняемые файлы:

-Compilers установка установки:

C:\Program Files (x86)\mingw-builds\x32-4.8.1-posix-dwarf-rev5\mingw32

-C компилятор:

i686-w64-mingw32-gcc-4.8.1.exe

-С++ Компилятор:

i686-w64-mingw32-c++.exe

-Linker для динамических библиотек:

i686-w64-mingw32-c++.exe

-Linker для статических библиотек:

ar.exe

-Debugger:

gdb.exe

-Resource Компилятор:

windres.exe

-Make Программа:

mingw32-make.exe
  • 0
    Вы не пользуетесь библиотекой sfml, содержащей эти символы. Обратитесь к документации sfml.
Показать ещё 5 комментариев
Теги:
multithreading
c++11
sfml
codeblocks

1 ответ

1

У меня была симулятивная проблема, и как я решил это в системе Linux: Project/build options

Перейдите на вкладку настроек компоновщика. там я добавил: sfml-network

Готово. Надеюсь, поможет

Ещё вопросы

Сообщество Overcoder
Наверх
Меню