Что означает сообщение / DISALLOWLIB в выходных данных компоновщика VC ++? - PullRequest
3 голосов
/ 17 апреля 2009

Я нахожусь в процессе отслеживания ошибки компоновщика с приложением VC ++ 2005. Когда я включаю подробный вывод компоновщика, я замечаю тонну этих сообщений:

Обработано /DISALLOWLIB:nafxcwd.lib

Что конкретно означает переключатель / DISALLOWLIB?

1 Ответ

6 голосов
/ 04 января 2012

Останавливает использование определенных библиотек совместно с другими библиотеками. Например, в библиотеке msvcrtd.lib есть запись, запрещающая msvcrt.lib (поскольку размещение версий отладки и выпуска этой библиотеки в одном исполняемом файле вызовет всевозможные проблемы).

Я не уверен, что это на самом деле переключатель компоновщика, хотя я никогда не пробовал его (он не документирован как таковой ни в одной из версий компоновщика из различных выпусков Visual Studio). можно вставить:

#pragma comment(linker, "/disallowlib:somelib.lib")

в ваших исходных файлах, так что, возможно, компоновщик может разрешить это. Где вы делаете находите это в библиотеках. Если вы выполните:

dumpbin.exe /rawdata msvcrtd.lib

вы увидите что-то вроде:

/disallowlib:libcmt.lib
/disallowlib:libcmtd.lib
/disallowlib:msvcrt.lib

в выводе, что означает, что «команда» является частью самого содержимого библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...