/ DISALLOWLIB消息在VC++链接器输出中的含义是什么?

dre*_*ewh 3 visual-c++

我正在使用VC++ 2005应用程序跟踪链接器错误.当我打开详细的链接器输出时,我注意到了大量这些消息:

已处理/DISALLOWLIB:nafxcwd.lib

/ DISALLOWLIB开关究竟是什么意思?

pax*_*blo 6

它阻止某些库与其他库一起使用.例如,msvcrtd.lib库有一个禁止的条目msvcrt.lib(因为将该库的调试版和发行版放在同一个可执行文件中会导致各种问题).

我不确定它实际上是一个链接器开关,虽然我从来没有尝试过(在各种Visual Studio版本的任何链接器版本中都没有记录).它可以插入:

#pragma comment(linker, "/disallowlib:somelib.lib")
Run Code Online (Sandbox Code Playgroud)

在源文件中,链接器也可以允许它.你在哪里做的发现它是库中.如果你执行:

dumpbin.exe /rawdata msvcrtd.lib
Run Code Online (Sandbox Code Playgroud)

你会看到类似的东西:

/disallowlib:libcmt.lib
/disallowlib:libcmtd.lib
/disallowlib:msvcrt.lib
Run Code Online (Sandbox Code Playgroud)

在输出中,意味着"命令"是库内容本身的一部分.