我正在尝试使用/GUARD:CD
MSVC标志。从the documentation,它说
必须同时为编译器和链接器指定/GUARD:CF
选项
文档还说/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 : Command line warning D9002 : ignoring unknown option '/GU'
cl : Command line warning D9002 : ignoring unknown option '/GD'
cl : Command line warning D9002 : ignoring unknown option '/G:'
cl : Command line warning D9002 : ignoring unknown option '/GC'
起初我以为可能是我不小心在文本编辑器中引入了不可打印的字符,但我用cat --show-nonprinting
验证了情况并非如此。
如何正确地将/GUARD:CF
传递给MSVC cl
编译器,以便它识别它?
2条答案
按热度按时间nfzehxib1#
您链接的页面是MSVC链接器选项手册的一部分。链接器选项不区分大小写。该页面有一个指向MSVC编译器选项手册的链接:
当使用/guard:cf选项编译源代码时。
其他选项区分大小写。正确的cl调用
只是想知道。对于链接器和编译器,禁用保护是不同的:
/GUARD:NO
和/guard:cf-
。xuo3flqw2#
你链接的文档(关于 linker
/GUARD
选项)是相当误导的,但答案就在那里,如果你仔细看的话:对于 compiler,命令行选项需要在中(但链接器似乎接受或)。
因此,在
cl
命令行上使用/guard:cf
而不是/GUARD:CF
。关于linked document:
当使用/guard:cf选项编译源代码时,...
而且,在
/guard:cf
链接到的页面上,开关永远只以的形式给出。