リンクLinking

C++ プロジェクトで、リンクコンパイラがオブジェクト ファイル (*.obj) にソース コードをコンパイル後の手順が実行されます。In a C++ project, the linking step is performed after the compiler has compiled the source code into object files (*.obj). リンカー (link.exe) は、1 つの実行可能ファイルにオブジェクト ファイルを結合します。The linker (link.exe) combines the object files into a single executable file.

Visual Studio の内外で、リンカー オプションを設定できます。Linker options can be set inside or outside of Visual Studio. Visual Studio 内でプロジェクト ノードを右クリックしてリンカー オプションにアクセスするソリューション エクスプ ローラーを選択してプロパティプロパティ ページを表示します。Within Visual Studio, you access linker options by right-clicking on a project node in Solution Explorer and choosing Properties to display the property pages. 選択リンカーで左側のウィンドウで、ノードを展開し、すべてのオプションを参照してください。Choose Linker in the left pane to expand the node and see all the options.

リンカー コマンドラインの構文Linker command-line syntax

Visual Studio の外部リンクを実行する場合は、1 つまたは複数の方法で入力を指定できます。When you run LINK outside of Visual Studio, you can specify input in one or more ways:

  • コマンド ラインOn the command line

  • コマンド ファイルを使用します。Using command files

  • 環境変数In environment variables

その後にオプションおよびコマンド ファイル、コマンドラインで指定された順序で、リンクの環境変数でリンク最初プロセス オプションを指定します。LINK first processes options specified in the LINK environment variable, followed by options in the order they are specified on the command line and in command files. オプションは引数を繰り返し、処理された最後の 1 つが優先されます。If an option is repeated with different arguments, the last one processed takes precedence.

オプションは、すべてのビルドに適用されます。特定の入力ファイルをオプションを適用しないことができます。Options apply to the entire build; no options can be applied to specific input files.

リンクを実行します。実行可能ファイルを次のコマンド構文を使用します。To run LINK.EXE, use the following command syntax:

LINK arguments

argumentsオプションとファイル名を含めるし、任意の順序で指定することができます。The arguments include options and filenames and can be specified in any order. オプションは、処理された最初の場合は、次のファイルです。Options are processed first, then files. 引数を区切るためには、1 つ以上のスペースまたはタブを使用します。Use one or more spaces or tabs to separate arguments.

注意

このツールは、Visual Studio コマンド プロンプトからのみ開始できます。You can start this tool only from the Visual Studio command prompt. システム コマンド プロンプトやエクスプローラーからは開始できません。You cannot start it from a system command prompt or from File Explorer.

コマンド ラインCommand line

オプションの指定子のコマンドラインでオプションがで構成されています。 ダッシュ (-) またはスラッシュ (/) のいずれかの後に、オプションの名前。On the command line, an option consists of an option specifier, either a dash (-) or a forward slash (/), followed by the name of the option. オプション名の省略形は使用できません。Option names cannot be abbreviated. いくつかのオプションは、コロン (:) 後に指定された引数を取る。Some options take an argument, specified after a colon (:). スペースまたはタブは許可されませんオプションの指定を除く/COMMENT オプションでは、引用符で囲まれた文字列内にあります。No spaces or tabs are allowed within an option specification, except within a quoted string in the /COMMENT option. 10 進数または C 言語表記で数値の引数を指定します。Specify numeric arguments in decimal or C-language notation. オプション名および関連するキーワードまたはファイル名引数は大文字小文字が区別されませんが、引数としての識別子が大文字小文字を区別します。Option names and their keyword or filename arguments are not case sensitive, but identifiers as arguments are case sensitive.

ファイルをリンカーに渡すするには、リンク コマンドの後に、コマンドラインで、ファイル名を指定します。To pass a file to the linker, specify the filename on the command line after the LINK command. ファイル名は、絶対または相対パスを指定して、ファイル名にワイルドカードを使用することができます。You can specify an absolute or relative path with the filename, and you can use wildcards in the filename. ドット (.) とファイル名拡張子を省略すると、リンク ファイルの .obj と見なされます。If you omit the dot (.) and filename extension, LINK assumes .obj for the purpose of finding the file. リンクやを使用しないファイル名拡張子がないことにファイルの内容に関する判断を行う調べて、ファイルの種類を決定し、それに応じて処理します。LINK does not use filename extensions or the lack of them to make assumptions about the contents of files; it determines the type of file by examining it, and processes it accordingly.

link.exe は、成功 (エラーなし)、0 を返します。link.exe returns zero for success (no errors). それ以外の場合、リンカーは、リンクを停止するエラー番号を返します。Otherwise, the linker returns the error number that stopped the link. たとえば、リンカーは、LNK1104 を生成、リンカーは 1104 を返します。For example, if the linker generates LNK1104, the linker returns 1104. したがって、エラーが発生、リンカーによって返される最小のエラー番号には 1000 です。Accordingly, the lowest error number returned on an error by the linker is 1000. 128 の戻り値は、オペレーティング システムまたは .config ファイルのいずれかの構成に問題を表しますlink.exe または c2.dll、ローダーは読み込まれませんでした。A return value of 128 represents a configuration problem with either the operating system or a .config file; the loader didn’t load either link.exe or c2.dll.

コマンド ファイルの形式でリンクには、コマンドライン引数を渡すことができます。You can pass command-line arguments to LINK in the form of a command file. リンカーにコマンド ファイルを指定するには、次の構文を使用します。To specify a command file to the linker, use the following syntax:

リンク@ commandfileLINK @commandfile

Commandfileテキスト ファイルの名前を指定します。The commandfile is the name of a text file. スペースまたはタブ間は入れません、アット マーク (@) とファイル名。No space or tab is allowed between the at sign (@) and the filename. 既定の拡張機能はありません。任意の拡張子を含む完全なファイル名を指定する必要があります。There is no default extension; you must specify the full filename, including any extension. ワイルドカードを使用することはできません。Wildcards cannot be used. ファイル名では、絶対または相対パスを指定できます。You can specify an absolute or relative path with the filename. リンクは、ファイルを検索する環境変数を使用しません。LINK does not use an environment variable to search for the file.

コマンド ファイルで引数で分離できるスペースまたはタブ (コマンドライン) のように、改行文字。In the command file, arguments can be separated by spaces or tabs (as on the command line) and by newline characters.

コマンド ファイルでは、コマンドラインの一部またはすべてを指定できます。You can specify all or part of the command line in a command file. LINK コマンドでは、複数のコマンド ファイルを使用することができます。You can use more than one command file in a LINK command. リンクは、コマンドラインでその場所に指定されたものかのように、コマンド ファイルの入力を受け入れます。LINK accepts the command-file input as if it were specified in that location on the command line. コマンド ファイルを入れ子にすることはできません。Command files cannot be nested. リンクが、コマンド ファイルの内容をエコーしない限り、 /NOLOGOオプションを指定します。LINK echoes the contents of command files, unless the /NOLOGO option is specified.

Example

DLL をビルドするには、次のコマンドは、独立したコマンドのファイルにオブジェクト ファイルとライブラリの名前を渡し、3 番目のコマンド/EXPORTS オプションの指定のファイルを使用します。The following command to build a DLL passes the names of object files and libraries in separate command files and uses a third command file for specification of the /EXPORTS option:

link /dll @objlist.txt @liblist.txt @exports.txt

LINK ツールでは、次の環境変数を使用します。The LINK tool uses the following environment variables:

  • リンクと_リンク_、定義されている場合。LINK and _LINK_, if defined. 定義されている引数およびリンク ツール オプションと環境変数 LINK に定義されている引数の前に付加し、オプションを追加します、_リンク_環境変数を処理する前にコマンドライン引数。The LINK tool prepends the options and arguments defined in the LINK environment variable and appends the options and arguments defined in the _LINK_ environment variable to the command line arguments before processing.

  • LIB。定義されている場合。LIB, if defined. LINK ツールは、オブジェクト、ライブラリ、またはコマンドラインでまたはを指定されたその他のファイルを検索するときに LIB パスを使用、 /baseオプション。The LINK tools uses the LIB path when searching for an object, library, or other file specified on the command line or by the /BASE option. また、オブジェクトで指定された .pdb ファイルを検索するときにも LIB パスを使用します。It also uses the LIB path to find a .pdb file named in an object. LIB 変数では、複数のパスをセミコロンで区切って指定できます。The LIB variable can contain one or more path specifications, separated by semicolons. 1 つのパスは Visual C++ インストールの \lib サブディレクトリを示す必要があります。One path must point to the \lib subdirectory of your Visual C++ installation.

  • PATH。ツールが CVTRES を実行する必要があり、LINK 自身と同じディレクトリ内にこのファイルが見つからない場合 PATH, if the tool needs to run CVTRES and cannot find the file in the same directory as LINK itself. (LINK では、.res ファイルをリンクするために CVTRES を必要とします)。PATH は Visual C++ インストールの \bin サブディレクトリを示す必要があります。(LINK requires CVTRES to link a .res file.) PATH must point to the \bin subdirectory of your Visual C++ installation.

  • TMP。OMF ファイルまたは .res ファイルをリンクするときのディレクトリを指定します。TMP, to specify a directory when linking OMF or .res files.

関連項目See also

C/C++ ビルドのリファレンス MSVC リンカー オプション モジュール定義 (.def) ファイル リンカー サポートDll の遅延読み込みC/C++ Building Reference MSVC Linker Options Module-Definition (.def) Files Linker Support for Delay-Loaded DLLs