3

Boost.AsioとIntelIPP-Libraryに付属のMedia-Decoding-Samplesを使用するプロジェクトがあります。問題は次のとおりです。を定義せずにプロジェクトをコンパイルするWIN32_LEAN_AND_MEANと、Asioは悪名高い「winsock.halreadyincluded」エラーで文句を言います。マクロを定義すると、winsock.hを含むwindows.hに依存しているため、他のライブラリのヘッダーには未定義の型があります。そのヘッダーにwinsock.hを手動で追加しようとしましたが、これによりBoost.Asioが再び叫びます。私が考えることができる唯一の解決策は、すべてのコンパイルユニットを調べて、Asioが常に最初に含まれていることを確認することです。プロジェクトのサイズと複雑さ(およびそのソリューションの醜さ)のために、私はより良い方法を見つけたいと思います。

前もって感謝します !

4

2 に答える 2

4

ソースを分割し、Asio と IPP の両方を含むアプリケーションである種の共通ヘッダーを使用しないようにすると、これを回避できます。したがって、Asio が必要なソース ファイルには Boost ヘッダーが含まれ、IPP が必要なソース ファイルには IPP ヘッダーが含まれますが、両方を参照する必要があるクラスのヘッダー ファイルには外部ヘッダーを含めず、必要に応じて前方宣言を使用する必要があります。

于 2009-11-11T11:32:01.710 に答える
0

「他のライブラリのヘッダーに未定義の型があります」

幾つか?どのように複雑ですか?おそらく、それらのタイプを定義できますか?

于 2009-11-11T11:26:15.627 に答える