0

私は自分のプロジェクトで深刻な問題を抱えています。

2 つのレーダーを自分のプログラムにリンクする必要がありますが、最初のレーダーには winsock を使用する独自のライブラリがあり、2 番目のレーダーには winsock2 を使用したいと考えています。

どうやってやるの?

現時点では、winsock.hおよび内のインクルードから多くの再定義エラーが発生しますwinsock2.h

最初のレーダー ライブラリは既に DLL であることを考慮してください。ヘッダーと lib ファイルしかありません (ソースはありません)。

ご回答ありがとうございます。

4

1 に答える 1

0

ファイルに winsock.h と winsock2.h の両方が含まれないようにコード (およびプリコンパイル済みヘッダー) を構成することで、コンパイルの問題を回避できる可能性があります。 MFCプロジェクトでは正常です...

各 DLL を COM オブジェクトでラップし、メイン プログラムから COM 経由でアクセスできます。これには、2 つの DLL の使用をメインのコンパイルから完全に分離できるという利点があります。

インターフェイス ヘッダーに winsock ヘッダーを必要としないプログラムへのインターフェイスを提供する新しい DLL (それぞれ 1 つ) で各 DLL をラップできます。

もちろん、これは単に Windows.h のインクルード順序の問題である可能性があります。これをプリコンパイル済みヘッダーの先頭に配置してみてください...

#ifndef _WINDOWS_
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#undef WIN32_LEAN_AND_MEAN
#endif

#include <winsock2.h>
于 2010-09-15T11:46:07.403 に答える