どういうこと?
winsock.hとwindows.hはインクルードする順番によってはエラーを吐いてしまうという問題があります。つまり
#include <winsock.h> #include <windows.h>
である必要があるわけです。
で、boost.asioをwindows上で使用すると、内部的にはwinsockを使うことになるのですが、もし先にwindows.hがインクルードされていればboost.asioのヘッダでコンパイルエラーを出力してくれるようです。
で、今回のケースではこのboost.asioの予防線に引っかかった訳です。
//NG #include <opencv/cv.h> #include <boost/asio.hpp> //OK #include <boost/asio.hpp> #include <opencv/cv.h>
OKな方の順番でインクルードするだけのヘッダを用意して、それを使ってasioとcvをインクルードするようにするとか、プリコンパイルヘッダをつかってそこで順番固定するとか、対策としてはそんなところでしょうか。