1

私はスタック オーバーフローにまったく慣れていません。実際、これは私の最初の投稿です。皆さん、こんにちは。では、本題に入りましょう。ブースト ライブラリ スレッドの使用 ver. 1.54.0 VS2010 32 ビットの使用 - プロフェッショナル 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

この例を機能させるのを手伝ってくれませんか。この例を使用する理由は、まったく同じように設定された別のアプリがあり、このエラーのために機能しないためです:-(私の目標はマルチスレッドを機能させることであり、そこから取得できます。 御時間ありがとうございます。

4

1 に答える 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; の

于 2013-10-10T13:12:23.383 に答える