0

別々にコンパイルされた 2 つのプロジェクトをマージする際に問題があります。2 つの機械ステージ (最初のプロジェクト) とレーザー スキャナー用の 1 つのクラス/インターフェイス (2 番目のプロジェクト) を管理するために、いくつかのクラス (Qt と C++) を作成しました。最初のプロジェクトでクラス/インターフェイスをインポートすると、コンパイラはいくつかの Windows API クラスで多くの再定義エラーを表示します (2 番目のプロジェクトはクラスを winsock2 として使用します)。

誰かが私のエラーを見つけるのを手伝ってくれますか? 私の「文法」エラーだけではありません;)

ありがとう!

4

1 に答える 1

2

cleanプロジェクトだけを再構築して再度実行します。これが発生する可能性の 1 つは、プロジェクトのいずれかで以前のバージョンのライブラリを使用していた可能性があり、2 つのプロジェクトをマージした後、別のプロジェクトで最新バージョンのライブラリを使用している可能性があることです。マージしたプロジェクトの既存のコンパイル済みバイナリは、別のバージョンのライブラリを探しますが、別のバージョンのライブラリを 2 番目のプロジェクトに含めた可能性があります (またはその逆)。マージ後、両方が同じプロジェクトにあるように見えます! そのため、プロジェクトをクリーンアップして、最新バージョンのライブラリのみを使用し、再構築して実行してください。

と の両方を含めようとするwinsock.hwinsock2.h、必ずこのエラーが発生します。winsock2.hを完全に書き直したものだからですwinsock.h。したがって、間違いなく再定義エラーが発生します。

1つの可能な解決策は..

  Try to include winsock2.h before you include the header file(s) which is 
  including winsock.h.That will do.

またはTry using only 1 version of it

于 2012-05-18T11:18:09.143 に答える