【问题标题】:Passing main arguments to a second thread for freeglut launch将主要参数传递给第二个线程以启动 freeglut
【发布时间】:2022-01-14 19:03:12
【问题描述】:

我是 OpenGL 和 Freeglut 的新手,我想为外围图形输出创建一个不是操作系统线程的线程。当我创建第二个线程时,我想传递主命令行参数,以便初始化 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。

错误:

静态断言失败:std::thread:参数必须是可调用的 转换为右值后

#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;
}

如何正确传递参数?

【问题讨论】:

    标签: c++ pthreads main glut freeglut


    【解决方案1】:

    从 argc 参数中删除 & 字符 (&amp;):

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

    Thread::run_Td_1() 的第一个参数需要一个整数,而不是指向整数的指针。

    您可以尝试重现错误并尝试here

    【讨论】:

      猜你喜欢
      • 2016-01-13
      • 1970-01-01
      • 2019-10-09
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      • 2011-02-18
      • 2020-01-17
      相关资源
      最近更新 更多