Поделиться через


Вызов компоновщика компилятором 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 компоновщику. Компоновщик разрешает внешние ссылки следующим образом:

  1. В MAIN.obj ссылка func1 разрешается с помощью определения в MOD1.obj; ссылка func2 разрешается с помощью определения в MOD2.obj.

  2. В MOD1.obj ссылки printf_s и scanf_s разрешаются с помощью определений библиотеки, которые компоновщик находит в MOD1.obj.

  3. В MOD2.obj ссылки myline и mycircle разрешаются с помощью определений в MYGRAPH.lib.

См. также

Параметры компилятора MSVC
Настройка параметров компилятора