Вызов компоновщика компилятором 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.