Вопрос

Что значит #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

Другие советы

Я всегда называл их «директивами компилятора». Они направляют компилятора, чтобы делать вещи, разветвление, в том числе Libs, как показано выше, отключение определенных ошибок и т. Д., Во время фазы компиляции.

Компиляторы компании обычно создают свои собственные расширения для облегчения их функций. Например, (я верю) Microsoft начал сделку «#pragma один раз», и это было только в MS Products, теперь я не уверен.

Директивы прагмы Он включает в себя «#Pragma комментарий» в таблице вы увидите.

Емкость

Я подозреваю, например, имеет свой собственный набор # прагмы.

Эти ссылки в библиотеках выбраны в MSVC ++.

Директивы Pragma Укажите операционную систему или варианты компилятора операционной системы или машины (X86 или X64 ETC). Есть несколько вариантов доступны. Детали можно найти в 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()

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top