簡體   English   中英

std :: thread.join()和SFML不兼容?

[英]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聲明,則錯誤消失。

任何想法 ?

編輯2:更新的構建日志

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM