Что означает #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.
Linker -> General -> Additional Library Directories
)?
- person Royi; 18.09.2018
Я всегда называл их «директивами компилятора». Они заставляют компилятор делать что-то, разветвляясь, включая библиотеки, как показано выше, отключая определенные ошибки и т. Д., На этапе компиляции.
Компании-разработчики компиляторов обычно создают свои собственные расширения для облегчения своих функций. Например, (я полагаю) Microsoft начала сделку «#pragma once», и это было только в продуктах MS, теперь я не так уверен.
Директивы Pragma Он включает "#pragma комментарий »в таблице, которую вы увидите.
HTH
Я подозреваю, что у GCC, например, есть свой собственный набор прагм #.
#pragma comment
.
- person Rob Kennedy; 14.08.2010
Ответы и документация, предоставленные MSDN, являются лучшими, но я хотел бы добавить один типичный случай, который я часто использую, который требует использования #pragma comment
для отправки команды компоновщику, например, во время ссылки
#pragma comment(linker,"/ENTRY:Entry")
скажите компоновщику изменить форму точки входа WinMain()
на Entry()
, после чего CRTStartup
будет передавать управление Entry()
Эти ссылки в библиотеках, выбранных в MSVC ++.
Директивы 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
ищутся компоновщиком и включаются в окончательный исполняемый файл.