2017-05-24 9 views
1

新しい開発マシンをセットアップしました。それはWindowsを実行しています。& Visual Studio 2017コミュニティ。インストールされ、ビルドブースト(1.64.0、完全なビルド)、すべての良い。プログラムが起動する前にboost :: threadがハングしますか?

私はいくつかのIPCを使用していましたが、すべてが良いですが、私は奇妙な動作を開始しました。私のプログラムは非常に最初からハングアップし始めました。

私は途中でコンソールアプリケーションを扱っています。プログラムはちょうど開始し、何らかのユーザー入力を待っているか、または何らかの出力が起こる前にメインスレッドがスリープしていたかのようにカーソルが点滅します。私のすべてのプログラムの最初のことはヘッダーを印刷することです。

問題の特定に苦労した多くの失敗の後、私はboost.threadの機能を使用したときにしか起こらないことに気付きました。 VS2015からVS2017にプロジェクトを移行する際に問題があると考えました。ブランドの新しいプロジェクトを作成し、同じことが起こります。

最も簡単なプログラム(例:simple thread example)を使用していても、私はすべて点滅するカーソルを取得します。デバッグやリリースのプロファイルをビルドしていても、デバッグを試みても問題ありません。

「ステップイン」コマンドでプログラムを起動しても、VSはどのブレークポイントにも到達しません。 "ぶら下がっ"は、私のコードのエントリポイントの前に起こっているようです。

私は質問が明確であることを願っています。「吹き出しは何が起こっているのですか?

述べたように:他のBoostライブラリは、ブーストを含め、正常に動作している::ロケールと後押し::クロノを

--editを:、何の警告を罰金コンパイルしません。 "一見"うまく動作し、エラーも終了せず、メインスレッドがスリープしているかのようにハングします。

--edit 2:完全なコード例:

#include <boost/thread.hpp> 
#include <boost/chrono.hpp> 
#include <iostream> 

void wait(int seconds) 
{ 
    boost::this_thread::sleep_for(boost::chrono::seconds{seconds}); 
} 

void thread() 
{ 
    for (int i = 0; i < 5; ++i) 
    { 
    wait(1); 
    std::cout << i << '\n'; 
    } 
} 

int main() 
{ 
    //this point is never reached!!?! Hangs before my own code even starts 
    std::cout << "start!" << std::endl; 
    boost::thread t{thread}; 
    t.join(); 
} 
+0

[、最小完全、かつ検証例】なし(http://stackoverflow.com/help/ –

+0

"単純なスレッドの例"を送ったリンクは十分ではありませんか?私はここにコードを貼り付けます。編集:貼り付け:) – LFLFM

+0

一度欠けている終了引用符clangの下でうまく動作します。どのコンパイラを使用していますか? –

答えて

0

OKは、それが動作するようになりました。私はちょうどブーストを再構築し、それは今すべて正常に動作します。 program.exe: Native' has exited with code 255 (0xff)の質問に記載されている静的/動的なミックスアップが必要です。

Iは、以下のパラメータを用いて再構築:64ビット用

b2.exe toolset=msvc-14.1 address-model=32 --build-dir=build\x64 install --prefix="C:\boost" -j4 

(及び再び

関連する問題