您如何正确使用 /GUARD:CF MSVC 标志?
How do you correctly use /GUARD:CF MSVC flag?
我正在尝试使用 /GUARD:CD
MSVC 标志。从 the documentation,它说
The /GUARD:CF
option must be specified to both the compiler and linker
文档还说 /GUARD:CF
也需要设置 the /DYNAMICBASE
option。
但是,当我尝试编译时,我看到了无法识别选项的警告:
cl -c /W3 /O2 /EHsc /MP /Zi /nologo /MD /Zi /DUNICODE /D_UNICODE /D_CRT_SECURE_NO_DEPRECATE /LD -Isrc -Iimport/include -D_WINDOWS -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL /GS /DYNAMICBASE /GUARD:CF /Fo: redacted.cpp.obj redacted.cpp
cl:命令行警告 D9002:忽略未知选项“/GU”
cl:命令行警告 D9002:忽略未知选项“/GD”
cl:命令行警告 D9002:忽略未知选项“/G:”
cl:命令行警告 D9002:忽略未知选项“/GC”
起初我以为我可能不小心在我的文本编辑器中引入了不可打印的字符,但我用 cat --show-nonprinting
证实情况并非如此。
如何正确地将 /GUARD:CF
传递给 MSVC cl
编译器以便它识别它?
您链接的文档(关于 linker /GUARD
选项)具有误导性,但如果您查看 真的很难:
对于编译器,命令行选项需要小写(但链接器似乎接受大写或小写)。
因此,在 cl
命令行中使用 /guard:cf
而不是 /GUARD:CF
。
When source code is compiled by using the /guard:cf option, …
并且,在 /guard:cf
链接到的页面上,开关仅以小写形式给出。
您link编辑的页面是 MSVC linker 选项手册的一部分。链接器选项不区分大小写。该页面有一个 link 到 MSVC 编译器选项的手册:
When source code is compiled by using the
/guard:cf option.
编译器选项区分大小写。正确的 cl 调用
cl -c /W3 /O2 /EHsc /MP /Zi /nologo /MD /Zi /DUNICODE /D_UNICODE /D_CRT_SECURE_NO_DEPRECATE /LD -Isrc -Iimport/include -D_WINDOWS -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL /GS /DYNAMICBASE /guard:cf /Fo: redacted.cpp.obj redacted.cpp
只是想知道。 linker 和编译器的禁用保护是不同的:/GUARD:NO
和 /guard:cf-
.
我正在尝试使用 /GUARD:CD
MSVC 标志。从 the documentation,它说
The
/GUARD:CF
option must be specified to both the compiler and linker
文档还说 /GUARD:CF
也需要设置 the /DYNAMICBASE
option。
但是,当我尝试编译时,我看到了无法识别选项的警告:
cl -c /W3 /O2 /EHsc /MP /Zi /nologo /MD /Zi /DUNICODE /D_UNICODE /D_CRT_SECURE_NO_DEPRECATE /LD -Isrc -Iimport/include -D_WINDOWS -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL /GS /DYNAMICBASE /GUARD:CF /Fo: redacted.cpp.obj redacted.cpp cl:命令行警告 D9002:忽略未知选项“/GU” cl:命令行警告 D9002:忽略未知选项“/GD” cl:命令行警告 D9002:忽略未知选项“/G:” cl:命令行警告 D9002:忽略未知选项“/GC”
起初我以为我可能不小心在我的文本编辑器中引入了不可打印的字符,但我用 cat --show-nonprinting
证实情况并非如此。
如何正确地将 /GUARD:CF
传递给 MSVC cl
编译器以便它识别它?
您链接的文档(关于 linker /GUARD
选项)具有误导性,但如果您查看 真的很难:
对于编译器,命令行选项需要小写(但链接器似乎接受大写或小写)。
因此,在 cl
命令行中使用 /guard:cf
而不是 /GUARD:CF
。
When source code is compiled by using the /guard:cf option, …
并且,在 /guard:cf
链接到的页面上,开关仅以小写形式给出。
您link编辑的页面是 MSVC linker 选项手册的一部分。链接器选项不区分大小写。该页面有一个 link 到 MSVC 编译器选项的手册:
When source code is compiled by using the /guard:cf option.
编译器选项区分大小写。正确的 cl 调用
cl -c /W3 /O2 /EHsc /MP /Zi /nologo /MD /Zi /DUNICODE /D_UNICODE /D_CRT_SECURE_NO_DEPRECATE /LD -Isrc -Iimport/include -D_WINDOWS -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL /GS /DYNAMICBASE /guard:cf /Fo: redacted.cpp.obj redacted.cpp
只是想知道。 linker 和编译器的禁用保护是不同的:/GUARD:NO
和 /guard:cf-
.