Я пытаюсь интегрировать функциональность boost :: thread в мои приложения Qt, но компилятор выдает ошибку.Я не новичок в boost :: thread, фактически я использовал его много, много раз в приложениях, отличных от qt, но по какой-то причине у меня возникают проблемы с этим.Вот точный код:
заголовочный файл:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <boost/thread.hpp>
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
static void my_lengthly_method();
};
#endif // MAINWINDOW_H
исходный файл:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
boost::thread(&my_lengthly_method, this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::my_lengthly_method()
{
}
.pro файл:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
INCLUDEPATH += $$PWD
TARGET = untitled
TEMPLATE = app
LIB_GLOBAL = /usr/lib/x86_64-linux-gnu
DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
LIBS += \
-L$$LIB_GLOBAL -lboost_system \
-L$$LIB_GLOBAL -lboost_filesystem \
-L$$LIB_GLOBAL -lboost_thread \
-L$$LIB_GLOBAL -lboost_regex
Iзапустите проект и:
/usr/include/boost/bind/bind.hpp:259: error: too many arguments to function
unwrapper<F>::unwrap(f, 0)(a[base_type::a1_]);
~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
Когда вы нажмете на ошибку, он откроет этот файл, и вот что вы получите:
У меня естьЯ использовал эту удивительную библиотеку во многих различных проектах не Qt, и у меня никогда не было проблем.Есть ли способ обойти это?
Все мои API основаны на boost :: thread.
Я могу использовать потоки Qt, но не хочу.
Во всяком случае, прямо сейчас я хочу заставить работать нить буста.