Ошибка Boost Thread C2064 при попытке компиляции

0

Я совершенно новичок в переполнении стека, на самом деле это мой первый пост, так что привет всем. Поэтому давайте перейдем к делу. Использование потока библиотеки boost ver. 1.54.0 Использование VS2010 32 Bit - Professional Я построил библиотеки для потока boost, не используя предварительно скомпилированные заголовки в настройках vs C++, связал библиотеку с проектом, вот код

    #include <boost\thread\thread_only.hpp>
#include <iostream>
#include <conio.h>
#pragma comment(lib, "libboost_thread-vc100-mt-gd-1_54.lib")
#define BOOST_LIB_NAME libboost_thread-vc100-mt-gd-1_54.lib


struct callable
{
     void blah();
};

void callable::blah()
{
    std::cout << "Threading test !\n";
}
boost::thread createThread()
{
    callable x;
    return boost::thread(x);
}
int main()
{
    createThread();
    _getch();
    return 0;
}

после этого я получаю эту ошибку

Error   1   error C2064: term does not evaluate to a function taking 0 arguments    ..\..\boost_1_54_0\boost\thread\detail\thread.hpp   117 1   BoostTrial

Не могли бы вы помочь мне заставить этот пример работать. Причина, почему я использую этот пример, заключается в том, что у меня есть другое приложение, которое было настроено точно так же, и оно не работает из-за этой ошибки :-( моя цель - заставить многопоточность работать, а затем я могу взять ее оттуда. Спасибо за ваше время.

Теги:
multithreading
boost
visual-studio-2010

1 ответ

0
Лучший ответ

Вам нужно реализовать operator() в callable.

Не забудьте либо join() либо detach() поток, чтобы предотвратить ненормальное завершение программы.

Дополнительную информацию см. В руководстве boost::thread.

#include <boost\thread\thread_only.hpp>
#include <iostream>
#pragma comment(lib, "libboost_thread-vc100-mt-gd-1_54.lib")

using namespace boost;

struct callable
{
    void operator()()
    {
        std::cout << "Threading test !\n";
    }
};


boost::thread createThread()
{
    callable x;
    return boost::thread(x);
}
int main()
{
    boost::thread th = createThread();
    th.join();

}

Пример с std::thread;

  • 0
    Спасибо @Drop! +1 для вас. Я хотел бы сказать спасибо вам обоим в предыдущем комментарии, но я не могу уведомить более одного пользователя :-p.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню