Skip to content

Commit 458e0ed

Browse files
author
Colin Robertson
authored
Fix remaining "See x" issues in build (#4153)
1 parent ade0d19 commit 458e0ed

7 files changed

+112
-122
lines changed

docs/build/reference/managing-a-library.md

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,47 @@
11
---
22
description: "Learn more about: Managing a Library"
33
title: "Managing a Library"
4-
ms.date: "11/04/2016"
4+
ms.date: 03/02/2022
55
f1_keywords: ["VC.Project.VCLibrarianTool.OVERWRITEAllDefaultLibraries", "VC.Project.VCLibrarianTool.AdditionalDependencies", "VC.Project.VCLibrarianTool.RemoveObjects", "VC.Project.VCLibrarianTool.LibraryPaths", "VC.Project.VCLibrarianTool.OutputFile", "VC.Project.VCLibrarianTool.OVERWRITEDefaultLibraryNames", "VC.Project.VCLibrarianTool.AdditionalLibraryDirectories", "VC.Project.VCLibrarianTool.ListContentsFile", "VC.Project.VCLibrarianTool.ListContents", "VC.Project.VCLibrarianTool.SubSystemVersion", "VC.Project.VCLibrarianTool.OVERWRITEDefaultLibraryName", "VC.Project.VCLibrarianTool.SubSystem"]
66
helpviewer_keywords: ["/LIBPATH library manager option", "OUT library manager option", "CONVERT library manager option", "LIBPATH library manager option", "/LIST library manager option", "object files, building and modifying", "-LINK50COMPAT library manager option", "REMOVE library manager option", "SUBSYSTEM library manager option", "/LINK50COMPAT library manager option", "/OUT library manager option", "LIB [C++], managing COFF libraries", "-CONVERT library manager option", "LINK50COMPAT library manager option", "-OUT library manager option", "-REMOVE library manager option", "-LIST library manager option", "/SUBSYSTEM library manager option", "-SUBSYSTEM library manager option", "/REMOVE library manager option", "-LIBPATH library manager option", "object files", "LIST library manager option", "/CONVERT library manager option"]
77
ms.assetid: f56a8b85-fbdc-4c09-8d8e-00f0ffe1da53
88
---
99
# Managing a Library
1010

11-
The default mode for LIB is to build or modify a library of COFF objects. LIB runs in this mode when you do not specify /EXTRACT (to copy an object to a file) or /DEF (to build an import library).
11+
The default mode for LIB is to build or modify a library of COFF objects. LIB runs in this mode when you don't specify **`/EXTRACT`** (to copy an object to a file) or **`/DEF`** (to build an import library).
1212

1313
To build a library from objects and/or libraries, use the following syntax:
1414

15-
```
16-
LIB [options...] files...
17-
```
15+
> **`LIB`** [*`options...`*] *`files...`*
1816
19-
This command creates a library from one or more input *files*. The *files* can be COFF object files, 32-bit OMF object files, or existing COFF libraries. LIB creates one library that contains all objects in the specified files. If an input file is a 32-bit OMF object file, LIB converts it to COFF before building the library. LIB cannot accept a 32-bit OMF object that is in a library created by the 16-bit version of LIB. You must first use the 16-bit LIB to extract the object; then you can use the extracted object file as input to the 32-bit LIB.
17+
This command creates a library from one or more input files, *`files`*. The *`files`* can be COFF object files, 32-bit OMF object files, or existing COFF libraries. LIB creates one library that contains all objects in the specified files. If an input file is a 32-bit OMF object file, LIB converts it to COFF before building the library. LIB can't accept a 32-bit OMF object that's in a library created by the 16-bit version of LIB. You must first use the 16-bit LIB to extract the object; then you can use the extracted object file as input to the 32-bit LIB.
2018

21-
By default, LIB names the output file using the base name of the first object or library file and the extension .lib. The output file is put in the current directory. If a file already exists with the same name, the output file replaces the existing file. To preserve an existing library, use the /OUT option to specify a name for the output file.
19+
By default, LIB names the output file using the base name of the first object or library file and the extension *`.lib`*. The output file is put in the current directory. If a file already exists with the same name, the output file replaces the existing file. To preserve an existing library, use the **`/OUT`** option to specify a name for the output file.
2220

2321
The following options apply to building and modifying a library:
2422

25-
**/LIBPATH:** *dir*<br/>
26-
Overrides the environment library path. For details, see the description of the LINK [/LIBPATH](libpath-additional-libpath.md) option.
23+
**`/LIBPATH:`** *`dir`*\
24+
Overrides the environment library path and sets it to *`dir`*. For details, see the description of the LINK [`/LIBPATH`](libpath-additional-libpath.md) option.
2725

28-
**/LIST**<br/>
29-
Displays information about the output library to standard output. The output can be redirected to a file. You can use /LIST to determine the contents of an existing library without modifying it.
26+
**`/LIST`**\
27+
Displays information about the output library to standard output. The output can be redirected to a file. You can use **`/LIST`** to determine the contents of an existing library without modifying it.
3028

31-
**/NAME:** *filename*<br/>
32-
When building an import library, specifies the name of the DLL for which the import library is being built.
29+
**`/NAME:`** *`filename`*\
30+
When building an import library, *`filename`* specifies the name of the DLL for which the import library is being built.
3331

34-
**/NODEFAULTLIB**<br/>
35-
Removes one or more default libraries from the list of libraries it searches when resolving external references. See [/NODEFAULTLIB](nodefaultlib-ignore-libraries.md) for more information.
32+
**`/NODEFAULTLIB`**\
33+
Removes one or more default libraries from the list of libraries it searches when resolving external references. For more information, see [`/NODEFAULTLIB`](nodefaultlib-ignore-libraries.md).
3634

37-
**/OUT:** *filename*<br/>
38-
Overrides the default output filename. By default, the output library is created in the current directory, with the base name of the first library or object file on the command line and the extension .lib.
35+
**`/OUT:`** *`filename`*\
36+
Overrides the default output filename and replaces it with *`filename`*. By default, the output library is created in the current directory, with the base name of the first library or object file on the command line and the extension *`.lib`*.
3937

40-
**/REMOVE:** *object*<br/>
41-
Omits the specified *object* from the output library. LIB creates an output library by combining all objects (whether in object files or libraries), and then deleting any objects specified with /REMOVE.
38+
**`/REMOVE:`** *`object`*\
39+
Omits the specified *`object`* from the output library. LIB creates an output library by combining all objects (whether in object files or libraries), and then deleting any objects specified with **`/REMOVE`**.
4240

43-
**/SUBSYSTEM:**{**CONSOLE** \| **EFI_APPLICATION** \| **EFI_BOOT_SERVICE_DRIVER** \| **EFI_ROM** \| **EFI_RUNTIME_DRIVER** \| **NATIVE** \| **POSIX** \| **WINDOWS** \| **WINDOWSCE**}[,#[.##]]<br/>
44-
Tells the operating system how to run a program created by linking to the output library. For more information, see the description of the LINK [/SUBSYSTEM](subsystem-specify-subsystem.md) option.
41+
**`/SUBSYSTEM:`**{**`CONSOLE`** \| **`EFI_APPLICATION`** \| **`EFI_BOOT_SERVICE_DRIVER`** \| **`EFI_ROM`** \| **`EFI_RUNTIME_DRIVER`** \| **`NATIVE`** \| **`POSIX`** \| **`WINDOWS`** \| **`WINDOWSCE`**}[,#[.##]]\
42+
Tells the operating system how to run a program created by linking to the output library. For more information, see the description of the LINK [`/SUBSYSTEM`](subsystem-specify-subsystem.md) option.
4543

46-
LIB options specified on the command line are not case sensitive.
44+
LIB options specified on the command line aren't case sensitive.
4745

4846
You can use LIB to perform the following library-management tasks:
4947

@@ -56,7 +54,7 @@ You can use LIB to perform the following library-management tasks:
5654
- To delete a member from a library, use the /REMOVE option. LIB processes any specifications of /REMOVE after combining all input objects, regardless of command-line order.
5755

5856
> [!NOTE]
59-
> You cannot both delete a member and extract it to a file in the same step. You must first extract the member object using /EXTRACT, then run LIB again using /REMOVE. This behavior differs from that of the 16-bit LIB (for OMF libraries) provided in other Microsoft products.
57+
> You can't both delete a member and extract it to a file in the same step. You must first extract the member object using **`/EXTRACT`**, then run LIB again using **`/REMOVE`**. This behavior differs from that of the 16-bit LIB (for OMF libraries) provided in other Microsoft products.
6058
6159
## See also
6260

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,24 @@
11
---
2-
description: "Learn more about: /Qfast_transcendentals (Force Fast Transcendentals)"
3-
title: "/Qfast_transcendentals (Force Fast Transcendentals)"
4-
ms.date: "11/04/2016"
2+
description: "Learn more about: /Qfast_transcendentals (Force fast transcendentals)"
3+
title: "/Qfast_transcendentals (Force fast transcendentals)"
4+
ms.date: 03/02/2022
55
f1_keywords: ["/Qfast_transcendentals"]
66
helpviewer_keywords: ["/Qfast_transcendentals", "Force Fast Transcendentals"]
77
ms.assetid: 4de24bd1-38e6-49d4-9a05-04c9937d24ac
88
---
9-
# /Qfast_transcendentals (Force Fast Transcendentals)
9+
# `/Qfast_transcendentals` (Force fast transcendentals)
1010

1111
Generates inline code for transcendental functions.
1212

1313
## Syntax
1414

15-
```
16-
/Qfast_transcendentals
17-
```
15+
> **`/Qfast_transcendentals`**
1816
1917
## Remarks
2018

21-
This compiler option forces transcendental functions to be converted to inline code to improve execution speed. This option has an effect only when paired with **/fp:except** or **/fp:precise**. Generating inline code for transcendental functions is already the default behavior under **/fp:fast**.
19+
This compiler option forces transcendental functions to be converted to inline code to improve execution speed. This option has an effect only when paired with **`/fp:except`** or **`/fp:precise`**. Generating inline code for transcendental functions is already the default behavior under **`/fp:fast`**.
2220

23-
This option is incompatible with **/fp:strict**. See [/fp (Specify Floating-Point Behavior)](fp-specify-floating-point-behavior.md) for more information about floating point compiler options.
21+
This option is incompatible with **`/fp:strict`**. For more information about floating point compiler options, see [`/fp` (Specify Floating-Point Behavior)](fp-specify-floating-point-behavior.md).
2422

2523
### To set this compiler option in the Visual Studio development environment
2624

@@ -36,6 +34,6 @@ This option is incompatible with **/fp:strict**. See [/fp (Specify Floating-Poin
3634

3735
## See also
3836

39-
[/Q Options (Low-Level Operations)](q-options-low-level-operations.md)<br/>
40-
[MSVC Compiler Options](compiler-options.md)<br/>
41-
[MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md)
37+
[`/Q` Options (Low-level operations)](q-options-low-level-operations.md)\
38+
[MSVC compiler options](compiler-options.md)\
39+
[MSVC compiler command-line syntax](compiler-command-line-syntax.md)

docs/build/reference/safeseh-image-has-safe-exception-handlers.md

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,32 @@
11
---
22
description: "Learn more about: /SAFESEH (Image has Safe Exception Handlers)"
33
title: "/SAFESEH (Image has Safe Exception Handlers)"
4-
ms.date: "11/04/2016"
4+
ms.date: 03/02/2022
55
f1_keywords: ["/SAFESEH"]
66
helpviewer_keywords: ["/SAFESEH linker option", "-SAFESEH linker option", "SAFESEH linker option"]
77
ms.assetid: 7722ff99-b833-4c65-a855-aaca902ffcb7
88
---
9-
# /SAFESEH (Image has Safe Exception Handlers)
9+
# `/SAFESEH` (Image has Safe Exception Handlers)
1010

11-
```
12-
/SAFESEH[:NO]
13-
```
11+
> **`/SAFESEH`**[**`:NO`**]
1412
15-
When **/SAFESEH** is specified, the linker will only produce an image if it can also produce a table of the image's safe exception handlers. This table specifies for the operating system which exception handlers are valid for the image.
13+
When **`/SAFESEH`** is specified, the linker will only produce an image if it can also produce a table of the image's safe exception handlers. This table specifies for the operating system which exception handlers are valid for the image.
1614

17-
**/SAFESEH** is only valid when linking for x86 targets. **/SAFESEH** is not supported for platforms that already have the exception handlers noted. For example, on x64 and ARM, all exception handlers are noted in the PDATA. ML64.exe has support for adding annotations that emit SEH information (XDATA and PDATA) into the image, allowing you to unwind through ml64 functions. See [MASM for x64 (ml64.exe)](../../assembler/masm/masm-for-x64-ml64-exe.md) for more information.
15+
**`/SAFESEH`** is only valid when linking for x86 targets. **`/SAFESEH`** isn't supported for platforms that already have the exception handlers noted. For example, on x64 and ARM, all exception handlers are noted in the PDATA. ML64.exe has support for adding annotations that emit SEH information (XDATA and PDATA) into the image, allowing you to unwind through ml64 functions. For more information, see [MASM for x64 (ml64.exe)](../../assembler/masm/masm-for-x64-ml64-exe.md).
1816

19-
If **/SAFESEH** is not specified, the linker will produce an image with a table of safe exceptions handlers if all modules are compatible with the safe exception handling feature. If any modules were not compatible with safe exception handling feature, the resulting image will not contain a table of safe exception handlers. If [/SUBSYSTEM](subsystem-specify-subsystem.md) specifies WINDOWSCE or one of the EFI_* options, the linker will not attempt to produce an image with a table of safe exceptions handlers, as neither of those subsystems can make use of the information.
17+
If **`/SAFESEH`** isn't specified, the linker will produce an image with a table of safe exceptions handlers if all code segments are compatible with the safe exception handling feature. If any code segments weren't compatible with the safe exception handling feature, the resulting image won't contain a table of safe exception handlers. If [`/SUBSYSTEM`](subsystem-specify-subsystem.md) specifies WINDOWSCE or one of the `EFI_*` options, the linker won't attempt to produce an image with a table of safe exceptions handlers, as neither of those subsystems can make use of the information.
2018

21-
If **/SAFESEH:NO** is specified, the linker will not produce an image with a table of safe exceptions handlers even if all modules are compatible with the safe exception handling feature.
19+
If **`/SAFESEH:NO`** is specified, the linker won't produce an image with a table of safe exceptions handlers even if all code segments are compatible with the safe exception handling feature.
2220

23-
The most common reason for the linker not to be able to produce an image is because one or more of the input files (modules) to the linker was not compatible with the safe exception handlers feature. A common reason for a module to not be compatible with safe exception handlers is because it was created with a compiler from a previous version of Visual C++.
21+
The most common reason the linker can't produce an image is because one or more of the input files to the linker was incompatible with the safe exception handlers feature. A common reason why code is incompatible with safe exception handlers is because it was created with a compiler from a previous version of Visual C++.
2422

25-
You can also register a function as a structured exception handler by using [.SAFESEH](../../assembler/masm/dot-safeseh.md).
23+
You can also register a function as a structured exception handler by using [`.SAFESEH`](../../assembler/masm/dot-safeseh.md).
2624

27-
It is not possible to mark an existing binary as having safe exception handlers (or no exception handlers); information on safe exception handling must be added at build time.
25+
It isn't possible to mark an existing binary as having safe exception handlers (or no exception handlers); information on safe exception handling must be added at build time.
2826

29-
The linker's ability to build a table of safe exception handlers depends on the application using the C runtime library. If you link with [/NODEFAULTLIB](nodefaultlib-ignore-libraries.md) and you want a table of safe exception handlers, you need to supply a load config struct (such as can be found in loadcfg.c CRT source file) that contains all the entries defined for Visual C++. For example:
27+
The linker's ability to build a table of safe exception handlers depends on the application using the C runtime library. If you link with [`/NODEFAULTLIB`](nodefaultlib-ignore-libraries.md) and you want a table of safe exception handlers, you need to supply a load config struct (such as can be found in the *`loadcfg.c`* CRT source file) that contains all the entries defined for Visual C++. For example:
3028

31-
```
29+
```C
3230
#include <windows.h>
3331
extern DWORD_PTR __security_cookie; /* /GS security cookie */
3432

@@ -103,5 +101,5 @@ const IMAGE_LOAD_CONFIG_DIRECTORY32_2 _load_config_used = {
103101

104102
## See also
105103

106-
[MSVC linker reference](linking.md)<br/>
104+
[MSVC linker reference](linking.md)\
107105
[MSVC Linker Options](linker-options.md)

0 commit comments

Comments
 (0)