簡體   English   中英

將主 arguments 傳遞給第二個線程以啟動 freeglut

[英]Passing main arguments to a second thread for freeglut launch

我是 OpenGL 和 Freeglut 的新手,我想為外圍圖形 output 創建一個不是操作系統線程的線程。 當我創建第二個線程時,我想傳遞主命令行 arguments 以便初始化 freeglut。

我在用:

名稱:Code::Blocks,版本:20.03-r11997,SDK 版本:2.0.0,Scintilla 版本:3.7.5,編譯器名稱:GNU GCC 編譯器。

操作系統名稱:Ubuntu 20.04.3 LTS,操作系統類型:64 位,GNOME 版本:3.36.8,窗口系統:X11。

錯誤:static 斷言失敗:std::thread: arguments 在轉換為右值后必須是可調用的

#include "Thread.h"
#include <thread>

#include <GL/glut.h>

class Thread
{
    public:
        Thread()
        {

        }
        ~Thread()
        {

        }
        static void run_Td_1(int argc, char *argv[])
        {
            glutInit(&argc, argv);
            glutInitWindowSize(640,480);
            glutInitWindowPosition(10,10);
            glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

            glutCreateWindow("GLUT Shapes");

            glutMainLoop();
        }

    protected:

    private:
};

int main(int argc, char *argv[])
{
    std::thread td_1(Thread::run_Td_1, &argc, argv);

    return EXIT_SUCCESS;
}

如何正確通過 arguments?

從 argc 參數中刪除&符號:

std::thread td_1(Thread::run_Td_1, argc, argv);

Thread::run_Td_1()的第一個參數需要 integer,而不是指向 integer 的指針。

您可以嘗試重現錯誤並在此處進行實驗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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