/Yl(为调试库插入 PCH 引用)

/Yl 选项在预编译头文件中生成唯一符号,并且此符号的引用将注入到使用预编译标头的所有对象文件中。

语法

/Yl
/Ylname
/Yl-

参数

name
用作唯一符号一部分的可选名称。

-
显式禁用 /Yl 编译器选项的 (-) 短划线。

备注

/Yl 编译器选项在使用 /Yc 选项创建的预编译头文件中创建唯一符号定义。 使用 /Yu 编译器选项,此符号的引用会自动注入到包含预编译标头的所有文件中。 使用 /Yc 创建预编译头文件时,默认启用 /Yl 选项。

/Ylname 选项用于在预编译头文件中创建可识别符号。 编译器使用 name 参数作为其创建的修饰符号名称的一部分,类似于 __@@_PchSym_@00@...@name,其中省略号(...)表示编译器生成的唯一字符串。 如果省略 name 参数,编译器会自动生成符号名称。 通常,无需知道符号的名称。 但是,当项目使用多个预编译头文件时,/Ylname 选项可用于确定使用哪个预编译标头的对象文件。 可以将 name 用作搜索字符串,以在转储文件中查找符号引用。

/Yl- 禁用默认行为,并且不会在预编译头文件中放置标识符号。 包含此预编译标头的已编译文件不会获取通用符号引用。

如果未指定 /Yc,则任何 /Yl 选项不起作用,但如果要指定,则必须与指定 /Yc 时传递的任何 /Yl 选项相匹配。

如果使用 /Yl-/Yc/Z7 选项生成预编译头文件,则调试信息将存储在用于创建预编译标头的源文件的对象文件中,而不是单独的 .pdb 文件中。 如果此对象文件是库的一部分,则在使用此库和预编译头文件的生成中可能发生 LNK1211 错误或 LNK4206 警告,前提是用于创建预编译头文件的源文件不定义任何符号本身。 库客户端中未引用对象文件内容时,链接器可能会从链接中排除对象文件以及关联的调试信息。 若要解决此问题,请在使用 /Yc 创建预编译头文件时指定 /Yl(或删除 /Yl- 选项)。 这可确保包含调试信息的库中的对象文件在生成中成功链接。

有关预编译标头的详细信息,请参阅:

在 Visual Studio 开发环境中设置此编译器选项

  1. 打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性

  2. 选择“配置属性”>“C/C++”>“命令行”属性页

  3. 在“附加选项”框中添加 /Ylname 编译器选项。 选择“确定”以保存更改 。

以编程方式设置此编译器选项

另请参阅

MSVC 编译器选项
MSVC 编译器命令行语法