Вызов компоновщика компилятором CL
Cl автоматически вызывает компоновщик после компиляции, если параметр /c не используется. CL передает компоновщику имена OBJ-файлов, созданных во время компиляции, и имена любых других файлов, указанных в командной строке. Компоновщик использует параметры, перечисленные в переменной среды LINK. Параметр /link можно использовать для указания параметров компоновщика в командной строке CL. Параметры, которые следуют параметру /link, переопределяют эти параметры в переменной среды LINK. Параметры в следующей таблице подавляют связывание.
Параметр | Описание |
---|---|
/c | Компиляция без связывания |
/E, /EP, /P | Предварительная обработка без компиляции или связывания |
/Zg | Создание прототипов функций |
/Zs | Проверка синтаксиса |
Дополнительные сведения о связывании см. в разделе "Параметры компоновщика MSVC".
Пример
Предположим, что выполняется компиляция трех исходных файлов C: MAIN.c, MOD1.c и MOD2.c. Каждый файл включает вызов функции, определенной в другом файле:
MAIN.c вызывает функцию
func1
в MOD1.c и функциюfunc2
в MOD2.c.MOD1.c вызывает стандартные функции
printf_s
библиотеки иscanf_s
.MOD2.c вызывает графические функции с именем и
mycircle
, которые определены в библиотеке с именемmyline
MYGRAPH.lib.
Чтобы создать эту программу, выполните компиляцию со следующей командной строкой:
CL MAIN.c MOD1.C MOD2.C MYGRAPH.lib
Среда CL сначала компилирует исходные файлы C и создает файлы объектов MAIN.obj, MOD1.obj и MOD2.obj. Компилятор помещает имя стандартной библиотеки в каждый OBJ-файл. Дополнительные сведения см. в разделе "Использование библиотеки времени выполнения".
CL передает имена OBJ-файлов вместе с именем MYGRAPH.lib в компоновщик. Компоновщик разрешает внешние ссылки следующим образом:
В MAIN.obj ссылка
func1
разрешена с помощью определения в MOD1.obj. Ссылкаfunc2
на нее разрешается с помощью определения в MOD2.obj.В MOD1.obj ссылки на
printf_s
иscanf_s
разрешаются с помощью определений библиотеки, которые компоновщик находит в MOD1.obj.В MOD2.obj ссылки на
myline
иmycircle
разрешаются с помощью определений в MYGRAPH.lib.
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе:Отправить и просмотреть отзыв по