Visual Studio 2017 バージョンで新しいプロジェクトを作成し、次の Windows ネットワーク プログラミング プログラムを入力すると、コンパイル エラーが発生しました。内容は次のとおりです。
エラー「エラー LNK2019: 未解決の外部シンボル _WSAStartup@8 が関数 _main で参照されています」
それを解決する方法は?
最も簡単で効果的な方法は、対応するヘッダー ファイルのすぐ下にコンパイラ命令を追加することです。他の操作について心配する必要はありません。
#pragma comment(lib,"ws2_32.lib")
このコードを追加したくない場合は、もちろん、図に示すように、プロジェクトのプロパティにプロジェクトの依存関係を追加できます。
プロジェクトのプロパティ--->リンカー---->入力---->追加の依存関係---->先頭に「ws2_32.lib」を追加
原理:
プログラムを作成するとき、コンパイラはエラーを報告しませんでした。しかし、コンパイル処理中に接続エラーが発生し、呼び出す関数を認識できませんでした。根本的な原因は、必要なヘッダー ファイル ランタイム ライブラリにコンパイラがリンクされていない可能性が非常に高いです。したがって、コンパイラをヘッダー ファイル <winsock.h> のランタイム ライブラリにリンクするだけで済みます。(新しいプログラミング、限られた理解、正確でない可能性があります)
#pragam コンパイラ命令は、コンパイラに <winsock.h> のライブラリ ファイル ws2_32.lib にリンクするように指示します。つまり#pragma comment(lib,"ws2_32.lib") です。
pragam コンパイラ命令の使用法については、興味がある場合はオンラインで収集できます。私はプログラミング初心者なので、ここでは説明しません。
最後に、再コンパイルすると、プログラムは正常に実行できます。