Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В проекте C++ шаг связывания выполняется после компиляции исходного кода в файлы объектов (*.obj). Компоновщик (link.exe) объединяет файлы объектов в один исполняемый файл.
Параметры компоновщика можно задать внутри или за пределами Visual Studio. В Visual Studio вы можете получить доступ к параметрам компоновщика, щелкнув правой кнопкой мыши узел проекта в Обозреватель решений и выбрав свойства для отображения страниц свойств. Выберите компоновщик в левой области, чтобы развернуть узел и просмотреть все параметры.
Синтаксис командной строки компоновщика
При запуске компоновщика за пределами Visual Studio можно указать входные данные одним или несколькими способами:
- В командной строке
- Использование файлов команд
- В переменных среды
Компоновщик сначала обрабатывает параметры, указанные в LINK переменной среды, а затем параметры в порядке, указанном в командной строке и в файлах команд. Если параметр повторяется с разными аргументами, последний обработанный имеет приоритет.
Параметры применяются ко всей сборке; Никакие параметры не могут применяться к определенным входным файлам.
Чтобы выполнить команду link.exe, используйте следующий синтаксис команды:
link arguments
Параметры arguments включения и имена файлов можно указать в любом порядке. Сначала обрабатываются параметры, а затем файлы. Используйте одно или несколько пробелов или вкладок для разделения аргументов.
Примечание.
Это средство можно запустить только из командной строки Visual Studio. Его нельзя запустить из системной командной строки или проводника.
Командная строка
В командной строке параметр состоит из описателя параметров, дефиса (-) или косой черты вперед (/), а затем имени параметра. Имена параметров не могут быть сокращены. Некоторые параметры принимают аргумент, указанный после двоеточия (:). Пробелы или вкладки не допускаются в спецификации параметра, за исключением строки с кавычками в параметре /COMMENT . Укажите числовые аргументы в десятичной или C-языковой нотации. Имена вариантов и их ключевые слова или аргументы имени файла не чувствительны к регистру, но идентификаторы в качестве аргументов чувствительны к регистру.
Чтобы передать файл компоновщику, укажите имя файла в командной строке после link.exe команды. Можно указать абсолютный или относительный путь с именем файла и использовать подстановочные знаки в имени файла. Если опустить расширение dot (.) и filename, компоновщик предполагает расширение .obj для поиска файла. Компоновщик не использует расширения имени файла или отсутствие их для принятия предположений о содержимом файлов. Он определяет тип файла, проверяя его, и обрабатывает его соответствующим образом.
Примечание.
Различные флаги компоновщика принимают имя файла. Указываете ли относительный путь или абсолютный путь, если полное имя файла превышает MAX_PATH (260 символов), компоновщик может завершиться ошибкой при поиске библиотек. Если вы столкнулись с этой проблемой, попробуйте использовать более короткий путь.
Компоновщик возвращает ноль для успешного выполнения (без ошибок). В противном случае возвращается номер ошибки, остановивший ссылку. Например, если компоновщик создает LNK1104, компоновщик возвращает значение 1104. Соответственно, наименьший номер ошибки, возвращенный компоновщиком, равен 1000. Возвращаемое значение 128 представляет проблему конфигурации с операционной системой или файлом конфигурации; загрузчик не загружал link.exe или c2.dll.
Файлы команд компоновщика
Аргументы link.exe командной строки можно передать в форму файла команды. Чтобы указать файл команды компоновщику, используйте следующий синтаксис:
link @commandfile
Имя commandfile текстового файла. Пробел или вкладка не разрешены между знаком (@) и именем файла. Нет расширения по умолчанию; Необходимо указать полное имя файла, включая любое расширение. Подстановочные знаки нельзя использовать. Можно указать абсолютный или относительный путь с именем файла. Не должно превышать MAX_PATH (260 символов). Компоновщик не использует переменную среды для поиска файла.
В файле команд аргументы разделены пробелами или вкладками (как в командной строке) и новыми символами.
В командном файле можно указать все или часть командной строки. В команде link.exe можно использовать несколько файлов команд. Компоновщик принимает входные данные в командной строке, как если бы он был указан в этом расположении в командной строке. Не удается вложить файлы команд. Компоновщик отражает содержимое файлов команд, если /NOLOGO не указано.
Пример
Следующая команда создает библиотеку DLL. Он передает имена файлов объектов и библиотек в отдельных файлах команд и использует третий файл команд для спецификации /EXPORTS параметра:
link /dll @objlist.txt @liblist.txt @exports.txt
Переменные среды LINK
Компоновщик распознает следующие переменные среды:
-
LINKи_LINK_, если определено. Компоновщик добавляет параметры и аргументы, определенные в переменной среды, и добавляет параметры и аргументы, определенные вLINKпеременной_LINK_среды, к аргументам командной строки перед обработкой. -
LIB, если определено. Компоновщик используетLIBпуть при поиске объекта, библиотеки или другого файла, указанного в командной строке или параметре/BASE. Он также используетLIBпуть для поиска.pdbфайла с именем в объекте. ПеременнаяLIBможет содержать одну или несколько спецификаций пути, разделенных точкой с запятой. Один путь должен указывать на\libподкаталог установки Microsoft C++. -
PATH, если инструменту нужно запуститьCVTRESи не удается найти файл в том же каталоге, чтоlink.exeи сам. (link.exeтребуетсяCVTRESсвязать.resфайл.)PATHдолжен указывать на\binподкаталог установки Microsoft C++. -
TMP, чтобы указать каталог при связывании OMF или.resфайлов.
См. также
Справочные сведения о сборке C/C++
Параметры компоновщика MSVC
Файлы module-Definition (.def)
Поддержка компоновщика для библиотек DLL с отложенной загрузкой