[英]std::thread.join() and SFML incompatibility?
使用std :: thread和SFML2.1有一個我不明白的錯誤。
在使用DevCPP + TDM-GCC進行開發時,我沒有出現此錯誤,但是我現在使用Code :: Blocks + TDM-GCC(Windows 7)。
基本上,我沒有任何編譯錯誤/警告,但是如果我在主實例中實例化了SFML RenderWindow,則會得到一個程序對線程連接不響應。
我試圖問我們的Google朋友是否有任何新的消息,但是它沒有檢索到任何有幫助的結果,請使用Code :: Blocks重新編譯SFML,這是“肯定的” ...
這是一段非常簡化的代碼,在該代碼上我仍然遇到錯誤(我已經設法在SFML中獲得一個帶有紋理和文本的窗口,除了SFML庫配置問題之外):
#include <SFML/Graphics.hpp>
#include <thread>
#include <iostream>
int main(int, char const**)
{
std::thread my_thread([](){
std::cout<<"toto"<<'\n';
});
my_thread.join();
//my_thread.detach();
std::cout<<"tata"<<'\n';
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
return EXIT_SUCCESS;
}
如果我將my_thread.join()
替換為my_thread.detach()
,該錯誤就會消失。
如果刪除RenderWindow聲明,則錯誤消失。
任何想法 ?
mingw32-g++.exe -std=c++11 -Wall -pthread -lpthread -std=c++11 -g -pthread -IC:\SFML-2.1\include -Ijabos -IC:\SFML-2.1\include -c C:\Users\frup82554\Documents\svn\jabos\jabos\main.cpp -o jabos.cb\obj\Debug\jabos\main.o
mingw32-g++.exe -LC:\SFML-2.1\lib -LC:\SFML-2.1\lib -o jabos.cb\bin\Debug\jabos.exe jabos.cb\obj\Debug\jabos\Couple.o jabos.cb\obj\Debug\jabos\Force.o jabos.cb\obj\Debug\jabos\main.o jabos.cb\obj\Debug\jabos\Masse.o jabos.cb\obj\Debug\jabos\Masse1d.o jabos.cb\obj\Debug\jabos\ThreadPool.o jabos.cb\obj\Debug\jabos\ValeurNDimension.o -lpthread -pthread -lpthread -lmingw32 -luser32 -lgdi32 -lwinmm -ldxguid -lsfml-graphics-d -lsfml-window-d -lsfml-system-d
Output file is jabos.cb\bin\Debug\jabos.exe with size 1.62 MB
Process terminated with status 0 (0 minute(s), 1 second(s))
0 error(s), 0 warning(s) (0 minute(s), 1 second(s))
我使用的是TDM-GCC-481
和針對TDM-GCC-471
編譯的SFML(可下載)。
我嘗試安裝TDM-GCC-471
但無法識別std :: thread。
因此,我用TDM-GCC-481
重新編譯了SFML(由於SFML教程和cmake, 非常容易做到),現在該錯誤消失了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.