Что #pragma comment
значит в следующем?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Что #pragma comment
значит в следующем?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Ответы:
#pragma comment
директива компилятора, которая указывает Visual C ++ оставить комментарий в сгенерированном объектном файле Комментарий может быть прочитан компоновщиком при обработке объектных файлов.
#pragma comment(lib, libname)
говорит компоновщику добавить библиотеку 'libname' в список зависимостей библиотеки, как если бы вы добавили ее в свойствах проекта по адресу Linker->Input->Additional dependencies
Смотрите #pragma комментарий на MSDN
Я всегда называл их «директивами компилятора». Они предписывают компилятору делать вещи, ветвления, в том числе библиотеки, как показано выше, отключение определенных ошибок и т. Д. На этапе компиляции.
Компиляторные компании обычно создают свои собственные расширения для облегчения их функций. Например, (я полагаю) Microsoft заключила сделку «#pragma Once», и это было только в продуктах MS, теперь я не так уверен.
Директивы Pragma В таблицу, которую вы увидите, включен «комментарий #pragma».
НТН
Я подозреваю, что GCC, например, имеет свой собственный набор # pragma's.
#pragma comment
значит.
Директивы Pragma указывают параметры компилятора для операционной системы или компьютера (x86 или x64 и т. Д.). Есть несколько доступных вариантов. Подробности можно найти в https://msdn.microsoft.com/en-us/library/d9x1s805.aspx
#pragma comment( comment-type [,"commentstring"] )
имеет этот формат.
Обратитесь к https://msdn.microsoft.com/en-us/library/7f0aews7.aspx за подробной информацией о различных типах комментариев.
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Приведенные выше строки кода включают имена библиотек (или пути), которые должны быть найдены компоновщиком. Эти подробности включены как часть записи поиска библиотеки в объектном файле.
Итак, в этом случае kernel.lib
и user32.lib
ищется компоновщик и включается в окончательный исполняемый файл.
Ответы и документация, предоставленные MSDN, являются лучшими, но я хотел бы добавить один типичный случай, который я часто использую, который требует использования, например, #pragma comment
для отправки команды компоновщику во время соединения
#pragma comment(linker,"/ENTRY:Entry")
скажите линкер , чтобы изменить форму точки входа , WinMain()
чтобы Entry()
после того, что CRTStartup
собирается передать проверочный вEntry()
Linker -> General -> Additional Library Directories
)?