[英]c++11 threads, SFML and code::blocks
我正在嘗試使用c ++ 11 std::thread
和用於網絡的SFML庫運行此代碼,但是我無法構建它。 我很確定它與我如何設置編譯器有關,但我不知道...如何使它起作用? 我一直在想讓它正常工作,現在已經花了幾個小時來閱讀教程等,所以我一直在尋求解決方案。 我在Windows7 64位計算機上使用代碼:: blocks IDE和x32-4.8.1-posix-dwarf-rev5編譯器。
#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
搜索目錄-鏈接器:
C:\Users\user\CppProjects\SFML-2.1\lib\
工具鏈可執行文件:
-編譯器安裝目錄:
C:\Program Files (x86)\mingw-builds\x32-4.8.1-posix-dwarf-rev5\mingw32
-C編譯器:
i686-w64-mingw32-gcc-4.8.1.exe
-C ++編譯器:
i686-w64-mingw32-c++.exe
-動態庫鏈接器:
i686-w64-mingw32-c++.exe
-用於靜態庫的鏈接器:
ar.exe
-調試器:
gdb.exe
-資源編譯器:
windres.exe
-制作程序:
mingw32-make.exe
我遇到了一個類似的問題,如何在Linux系統上解決此問題:項目/構建選項
轉到鏈接器設置選項卡。 我在那添加了:sfml-network
完成。 希望能幫助到你
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.